欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 备份docker的数据库文件信息

备份docker的数据库文件信息

2025/6/8 11:04:58 来源:https://blog.csdn.net/qq_45621643/article/details/146011417  浏览:    关键词:备份docker的数据库文件信息
#!/bin/bash# 配置参数
CONTAINER_ID="*****"        # Docker 容器 ID
DB_USER="root"                     # MySQL 用户名
DB_PASSWORD="****"          # MySQL 密码
DB_NAME="***"                  # 需要备份的数据库名
BACKUP_DIR="/root/data_backup"      # 备份文件和日志的存放目录
BACKUP_FILE="customer_$(date +%Y%m%d).sql"  # 备份文件名
CONTAINER_BACKUP_PATH="/tmp/$BACKUP_FILE"  # 容器内临时备份路径
LOG_FILE="$BACKUP_DIR/mysql_backup.log"    # 日志文件
MAX_BACKUPS=10  # 最多保留的备份文件数# 确保日志文件和备份目录存在
mkdir -p $BACKUP_DIR
touch $LOG_FILE# 记录开始时间
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始备份数据库..." | tee -a $LOG_FILE# 1️⃣ 在 Docker 容器内执行 `mysqldump` 备份
docker exec $CONTAINER_ID sh -c "mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $CONTAINER_BACKUP_PATH"
if [ $? -eq 0 ]; thenecho "[$(date '+%Y-%m-%d %H:%M:%S')] 数据库备份成功:$CONTAINER_BACKUP_PATH" | tee -a $LOG_FILE
elseecho "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ 数据库备份失败" | tee -a $LOG_FILEexit 1
fi# 2️⃣ 复制备份文件到宿主机
docker cp $CONTAINER_ID:$CONTAINER_BACKUP_PATH $BACKUP_DIR/
if [ $? -eq 0 ]; thenecho "[$(date '+%Y-%m-%d %H:%M:%S')] 备份文件成功复制到宿主机:$BACKUP_DIR/$BACKUP_FILE" | tee -a $LOG_FILE
elseecho "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ 备份文件复制失败" | tee -a $LOG_FILEexit 1
fi# 3️⃣ 删除容器内的备份文件
docker exec $CONTAINER_ID rm -f $CONTAINER_BACKUP_PATH
if [ $? -eq 0 ]; thenecho "[$(date '+%Y-%m-%d %H:%M:%S')] 容器内临时备份文件删除成功" | tee -a $LOG_FILE
elseecho "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ 容器内临时备份文件删除失败,请手动检查" | tee -a $LOG_FILE
fi# 4️⃣ 仅保留最新的 10 份备份文件,删除多余的
BACKUP_COUNT=$(ls -1 $BACKUP_DIR/customer_*.sql 2>/dev/null | wc -l)
if [ $BACKUP_COUNT -gt $MAX_BACKUPS ]; thenDELETE_COUNT=$((BACKUP_COUNT - MAX_BACKUPS))echo "[$(date '+%Y-%m-%d %H:%M:%S')] 备份文件超过 $MAX_BACKUPS 份,正在删除最旧的 $DELETE_COUNT 份..." | tee -a $LOG_FILEls -1t $BACKUP_DIR/customer_*.sql | tail -n $DELETE_COUNT | xargs rm -fif [ $? -eq 0 ]; thenecho "[$(date '+%Y-%m-%d %H:%M:%S')] 旧备份文件删除成功" | tee -a $LOG_FILEelseecho "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ 旧备份文件删除失败,请检查" | tee -a $LOG_FILEfi
fi# 5️⃣ 记录备份完成时间
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ 数据库备份流程完成!" | tee -a $LOG_FILE
exit 0

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词