docker环境下mysql备份数据

创建文件夹

mkdir /storage/docker/mysql/backups && cd /storage/docker/mysql/backups

编辑脚本

vim backups.sh
#!/bin/bash

# 备份路径
BACKUP=/storage/docker/mysql/backups

# 当前时间
DATETIME=$(date +%Y-%m-%d)

# MySQL 容器名
DB_CONTAINER_NAME=mysql

# 参数介绍 :  user_center (数据库名称) root (账号) jbzx@2023(密码) 
DATABASES=(
    "user_center root jbzx@2023"
    "way_soil_cloud root jbzx@2023"
    "way_wlw_cloud root jbzx@2023"
    "xxl_job root jbzx@2023"
)

echo "=== 备份开始 ==="

# 创建备份目录
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"

# 循环备份数据库
for DATABASE in "${DATABASES[@]}"
do
    DATABASE=($DATABASE)
    DB_NAME=${DATABASE[0]}
    DB_USER=${DATABASE[1]}
    DB_PW=${DATABASE[2]}
    echo "备份文件存放于 ${BACKUP}/${DATETIME}/${DB_NAME}-${DATETIME}.sql"
    docker exec ${DB_CONTAINER_NAME} mysqldump -u ${DB_USER} -p${DB_PW} ${DB_NAME} > ${BACKUP}/${DATETIME}/${DB_NAME}-${DATETIME}.sql
done

echo "=== 导出成功,开始传输 ==="

# 压缩成 tar.gz 包
cd ${BACKUP}
tar -zcvf ${DATETIME}.tar.gz ${DATETIME}

# 删除备份目录
rm -rf ${BACKUP}/${DATETIME}

# 删除60天(不含)前备份的数据
find ${BACKUP} -mtime +60 -name "*.tar.gz" -exec rm -rf {} \;

echo "=== 数据库备份完成 ==="

如果数据库不在当前主机上,可以复制博主的脚本去让chatgpt帮你修改

修改脚本权限

chmod +x backups.sh

使用定时任务执行脚本

crontab -e
0 2 * * * 存放脚本的路径/backups.sh >> 存放日志的路径/backup.log 2>&1

查看详情

crontab -l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值