From d65583f6dff302f955d7c31533420a4984d9e954 Mon Sep 17 00:00:00 2001 From: aiyimickey <39365912+aiyimickey@users.noreply.github.com> Date: Fri, 15 May 2026 16:19:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=87=E4=BB=BD=E5=89=8D=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=20WAL=20checkpoint=20+=20=E7=A1=AE=E4=BF=9D=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E7=9B=AE=E5=BD=95=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 复制数据库文件前通过 docker exec sqlite3 执行 PRAGMA wal_checkpoint(TRUNCATE), 确保 WAL 内容合并到 .db 主文件,避免备份不一致或损坏 - 添加 mkdir -p 确保本地备份目录存在 --- backup-db.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backup-db.sh b/backup-db.sh index f65d3d1..1e01792 100755 --- a/backup-db.sh +++ b/backup-db.sh @@ -11,11 +11,19 @@ log() { echo "[$(date '+%H:%M:%S')] $1"; } log "开始备份云端数据库..." +# 备份前执行 WAL checkpoint,确保数据全部合并到 .db 主文件 +log "执行 WAL checkpoint..." +ssh txjp "docker exec assets-ai sqlite3 /app/data/assets.db 'PRAGMA wal_checkpoint(TRUNCATE)' && \ + docker exec issue-ai sqlite3 /app/data/issue.db 'PRAGMA wal_checkpoint(TRUNCATE)'" + # 云端打包 ssh txjp "mkdir -p /tmp/db-backup && \ cp /root/docker/assets-ai/data/assets.db /tmp/db-backup/assets-${TIMESTAMP}.db && \ cp /root/docker/issue-ai/data/issue.db /tmp/db-backup/issue-${TIMESTAMP}.db" +# 确保本地备份目录存在 +mkdir -p "${LOCAL_DIR}" + # 复制到本地 log "复制到本地..." scp "txjp:/tmp/db-backup/assets-${TIMESTAMP}.db" "${LOCAL_DIR}/"