docker中mysql数据备份脚本(可规定保存天数)
【代码】docker中mysql数据备份shell脚本(可规定保存天数)
·
前提
- mysql使用docker部署
- 有一个文件映射出来看备份文件(参数DOCKER_BACKUP文件夹要映射BACKUP文件夹)
- 使用crontab定时器自动执行
脚本
#!/bin/bash
# 备份目录
BACKUP=
# 当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo $DATETIME
# 数据库的地址
HOST=
# 数据库的用户名
DB_USER=
# 数据库的密码
DB_PW=
# 备份的数据库名
DATABASE=
# 容器名称
DOCKER_DB_NAME=
# 容器备份目录
DOCKER_BACKUP=
# 保留备份天数
BACKUP_DAYS=
#创建备份目录 如果不存在就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
# 备份数据库
docker exec -i ${DOCKER_DB_NAME} sh -c "mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} > ${DOCKER_BACKUP}/${DATETIME}/$DATETIME.sql"
# 将文件处理成 tar.gz
cd ${BACKUP}
tar -zcvf $DATETIME.tar.gz ${DATETIME}
# 删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}
# 删除备份文件
find ${BACKUP} -atime +${BACKUP_DAYS} -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库 ${DATABASE} 成功"
crontab定时器
chmod +x backup.sh # 给backup.sh执行权限
0 2 * * * /data/mysql/backup.sh # 每天凌晨2点执行backup.sh
数据恢复
mysql -uroot -p'123456' < /data/test.sql
注意:该操作会重新创建数据库,请谨慎操作
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)