之前存在106.52上的仓库被重新初始化了,同时增加了测试账号的兼容,测试账号hxbtest001,...hxbtest005
This commit is contained in:
86
asr-monitor-test/db_backup.sh
Normal file
86
asr-monitor-test/db_backup.sh
Normal file
@@ -0,0 +1,86 @@
|
||||
#!/bin/bash
|
||||
# 腾讯云数据库同步脚本 (适配CynosDB)
|
||||
# 安全增强版 - 支持SSL连接和错误处理
|
||||
|
||||
# 配置参数
|
||||
LOCAL_DB="rag_flow"
|
||||
CLOUD_DB="rag_flow"
|
||||
BACKUP_DIR="./bk"
|
||||
LOG_FILE="./bk/db/db_sync.log"
|
||||
DATE=$(date +%Y%m%d%H%M)
|
||||
|
||||
# 腾讯云数据库信息
|
||||
CLOUD_HOST="gz-cynosdbmysql-grp-0vwlm22l.sql.tencentcdb.com"
|
||||
CLOUD_PORT="25317"
|
||||
CLOUD_USER="cyx" # 替换为实际用户名
|
||||
|
||||
# 创建备份目录
|
||||
mkdir -p $BACKUP_DIR
|
||||
|
||||
# 1. 获取本地数据库密码
|
||||
LOCAL_PASS=$(docker exec ragflow-mysql printenv MYSQL_ROOT_PASSWORD)
|
||||
if [ -z "$LOCAL_PASS" ]; then
|
||||
echo "[ERROR] $(date) 无法获取本地数据库密码" >> $LOG_FILE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 2. 从容器导出数据库
|
||||
echo "开始导出数据库!!!!"
|
||||
|
||||
# 修改后的导出命令
|
||||
docker exec ragflow-mysql sh -c \
|
||||
"mysqldump -u root -p'$LOCAL_PASS' \
|
||||
--single-transaction \
|
||||
--routines \
|
||||
--triggers \
|
||||
--hex-blob \
|
||||
--set-gtid-purged=OFF \
|
||||
$LOCAL_DB" | \
|
||||
sed -e 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' \
|
||||
-e "s/ NOT NULL DEFAULT (uuid()) COMMENT '订阅ID'/ NOT NULL COMMENT '订阅ID'/" \
|
||||
> $BACKUP_DIR/dump_$DATE.sql
|
||||
|
||||
# 检查导出结果
|
||||
if [ $? -ne 0 ] || [ ! -s $BACKUP_DIR/dump_$DATE.sql ]; then
|
||||
echo "[ERROR] $(date) 数据库导出失败" >> $LOG_FILE
|
||||
exit 1
|
||||
fi
|
||||
echo "导出数据库结束!!!!"
|
||||
# 3. 压缩备份
|
||||
gzip $BACKUP_DIR/dump_$DATE.sql
|
||||
BACKUP_SIZE=$(du -h $BACKUP_DIR/dump_$DATE.sql.gz | awk '{print $1}')
|
||||
|
||||
# 4. 从安全存储获取云数据库密码 (推荐方式)
|
||||
# 使用密码管理器或在安全位置存储密码
|
||||
CLOUD_PASS=$(cat ./bk/db/cloud_db_password.txt) # 替换为实际密码获取方式
|
||||
|
||||
# 5. 同步到腾讯云数据库 (强制SSL)
|
||||
|
||||
echo "同步到腾讯云数据库$CLOUD_HOST $CLOUD_PORT $CLOUD_USER $CLOUD_PASS $CLOUD_DB"
|
||||
zcat $BACKUP_DIR/dump_$DATE.sql.gz | \
|
||||
mysql -h $CLOUD_HOST -P $CLOUD_PORT -u $CLOUD_USER -p"$CLOUD_PASS" \
|
||||
$CLOUD_DB
|
||||
|
||||
# 6. 错误处理
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "[SUCCESS] $(date) 同步成功 | 大小: $BACKUP_SIZE" >> $LOG_FILE
|
||||
else
|
||||
ERROR_CODE=$?
|
||||
echo "[ERROR] $(date) 同步失败! 错误码: $ERROR_CODE" >> $LOG_FILE
|
||||
# 保留失败备份用于调试
|
||||
mv $BACKUP_DIR/dump_$DATE.sql.gz $BACKUP_DIR/failed_dump_$DATE.sql.gz
|
||||
|
||||
# 添加详细错误信息
|
||||
echo "[DEBUG] 错误详情: 可能原因 -" >> $LOG_FILE
|
||||
case $ERROR_CODE in
|
||||
1) echo "通用错误" >> $LOG_FILE ;;
|
||||
2) echo "SQL语法错误" >> $LOG_FILE ;;
|
||||
1045) echo "访问被拒绝 (用户/密码错误)" >> $LOG_FILE ;;
|
||||
2003) echo "无法连接到数据库服务器" >> $LOG_FILE ;;
|
||||
2026) echo "SSL连接问题" >> $LOG_FILE ;;
|
||||
*) echo "未知错误" >> $LOG_FILE ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# 7. 清理旧备份(保留7天)
|
||||
find $BACKUP_DIR -name "dump_*.gz" -mtime +7 -delete
|
||||
Reference in New Issue
Block a user