备份Docker部署的MySQL

一、MySQL备份脚本

1.本地部署的MySQL

1.1 备份脚本

# vi mysql_backup.sh
#!/bin/bash  
# MySQL连接参数  
USER="MySQL用户名"  
PASSWORD="MySQL密码"  
HOST="主机地址"  
PORT="3306"  
DATABASE="数据库名"  
  
# 备份文件存放目录  
BACKUP_DIR="/mnt/backup/mysql"  
  
# 当前的日期时间,用于备份文件名  
DATE=$(date +"%Y%m%d%H%M%S")  
  
# 完整的备份文件名  
BACKUP_FILE="$BACKUP_DIR/backup_$DATABASE_$DATE.sql"  
  
# 检查备份目录是否存在,如果不存在则创建  
if [ ! -d "$BACKUP_DIR" ]; then  
    mkdir -p "$BACKUP_DIR"  
    echo "已创建备份目录: $BACKUP_DIR"  
fi  
  
# 使用mysqldump进行备份  
mysqldump -h$HOST -P$PORT -u$USER -p$PASSWORD $DATABASE > "$BACKUP_FILE"  
  
# 检查备份是否成功  
if [ $? -eq 0 ]; then  
    echo "数据库 $DATABASE 已成功备份到 $BACKUP_FILE"  
else  
    echo "备份数据库时出错 $DATABASE"  
fi  
  
# (可选)删除旧的备份文件,例如只保留最近7天的备份  
# find $BACKUP_DIR -name "backup_$DATABASE_*.sql" -mtime +7 -delete

1.2 添加权限

# 添加执行权限
chmod +x mysql_backup.sh

1.3 执行脚本

./mysql_backup.sh

1.4 计划任务自动备份(可选)

# 每周六凌晨一点自动执行数据库备份脚本
# crontab -e
0 1 * * 6  /mnt/mysql_backup.sh

2.备份Docker部署的MySQL

注:如果MySQL是docker部署的,需将上方"1.1"数据库备份脚本拷贝到MySQL容器内执行。

# 将脚本复制到容器中  
docker cp ./mysql_backup.sh $CONTAINER_NAME_OR_ID:/tmp/ 
例:docker cp ./mysql_backup.sh  mysql:/tmp/
# 在容器中执行脚本  
# 注意:这里我们不需要-it选项,因为我们只是要执行命令,而不是交互式shell  
docker exec -it $CONTAINER_NAME_OR_ID  /bin/bash -c "/tmp/mysql_backup.sh"  

例:# docker exec -it  mysql  /bin/bash -c "/tmp/mysql_backup.sh"
     mysqldump: [Warning] Using a password on the command line interface can be insecure.
     数据库 oneapi 已成功备份到 /mnt/backup/mysql/backup_20240531095450.sql
# 如果LATEST_BACKUP_FILE为空,说明没有找到任何备份文件  
docker cp $CONTAINER_NAME_OR_ID:$BACKUP_DIR_IN_CONTAINER/$LATEST_BACKUP_FILE  $LOCAL_BACKUP_DIR/  
例:docker cp  mysql:/mnt/backup/mysql/backup_20240531095450.sql ./

注:脚本默认备份数据在docker容器中也有一份,为了避免备份文件占用mysql容器空间,建议登录容器中删除。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值