备份docker的数据库文件信息
- 手机
- 2025-09-10 15:12:01

#!/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 ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 数据库备份成功:$CONTAINER_BACKUP_PATH" | tee -a $LOG_FILE else echo "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ 数据库备份失败" | tee -a $LOG_FILE exit 1 fi # 2️⃣ 复制备份文件到宿主机 docker cp $CONTAINER_ID:$CONTAINER_BACKUP_PATH $BACKUP_DIR/ if [ $? -eq 0 ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 备份文件成功复制到宿主机:$BACKUP_DIR/$BACKUP_FILE" | tee -a $LOG_FILE else echo "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ 备份文件复制失败" | tee -a $LOG_FILE exit 1 fi # 3️⃣ 删除容器内的备份文件 docker exec $CONTAINER_ID rm -f $CONTAINER_BACKUP_PATH if [ $? -eq 0 ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 容器内临时备份文件删除成功" | tee -a $LOG_FILE else echo "[$(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 ]; then DELETE_COUNT=$((BACKUP_COUNT - MAX_BACKUPS)) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 备份文件超过 $MAX_BACKUPS 份,正在删除最旧的 $DELETE_COUNT 份..." | tee -a $LOG_FILE ls -1t $BACKUP_DIR/customer_*.sql | tail -n $DELETE_COUNT | xargs rm -f if [ $? -eq 0 ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 旧备份文件删除成功" | tee -a $LOG_FILE else echo "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ 旧备份文件删除失败,请检查" | tee -a $LOG_FILE fi fi # 5️⃣ 记录备份完成时间 echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ 数据库备份流程完成!" | tee -a $LOG_FILE exit 0
备份docker的数据库文件信息由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“备份docker的数据库文件信息”