Docker之mysql数据备份及恢复

tech2026-10-02  4

编写shell脚本:https://blog.csdn.net/qq_32684319/article/details/86996369

crontab相关:https://www.cnblogs.com/cuisi/p/6251848.html

mysql命令行:https://blog.csdn.net/u012436346/article/details/86570902

mysqldump:https://www.cnblogs.com/markLogZhu/p/11398028.html

目录

 

备份mysql数据库

编写shell脚本

在linux上添加定时任务

导入备份

将db.sql文件导入到容器/目录下

在容器内执行命令即可成功导入

注:导出所有库到一个sql文件中,通过Navicat或者将sql粘贴到工具中是无法导入成功的


备份mysql数据库

编写shell脚本

vi /home/mysql/db-backup.sh

#/usr/bin/env bash echo '开始备份数据' now=$(date "+%Y%m%d") backup_dir="/home/backup" #获取容器id mysqlid=`docker ps -aqf "name=service-mysql"` #进入mysql容器 docker exec -i ${mysqlid} bash<<'EOF' #mysqldump导出表结构和数据 if [ ! -d "/backup" ]; then mkdir -p /backup fi if [ -f "/backup/db.sql" ]; then rm -rf /backup/db.sql fi mysqldump --single-transaction -u root -h 127.0.0.1 --password=root --all-databases > /backup/db.sql echo '成功制作备份sql' if [ $? -ne 0 ]; then echo 'mysqldump运行失败' exit EOF fi exit EOF #将容器内sql文件导出到服务器 if [ ! -d "${backup_dir}" ]; then mkdir -p "${backup_dir}" fi docker cp ${mysqlid}:/backup/db.sql ${backup_dir}/db_${now}.sql if [ $? -ne 0 ]; then echo 'docker cp文件失败' exit fi #压缩备份 #删除超过10天的数据 #rm -f &{backup_dir}/db_$(date -d -10day +%Y%m%d).sql echo '完成备份数据'

在linux上添加定时任务

/etc/crontab和crontab -e区别

输入命令crontab -e

 

crontab -e会自动检查,出现以下情况则表示任务添加成功

重启crontab服务

service crond restart

查看定时任务是否运行:cron的log日志文件

tailf /var/log/cron

导入备份

将db.sql文件导入到容器/目录下

docker cp db_20200904.sql 77cd88f28cb7:/

在容器内执行命令即可成功导入

mysql -uroot -proot -h127.0.0.1 -P3306 < db_20200904.sql

注:

导出所有库到一个sql文件中,通过Navicat或者将sql粘贴到工具中是无法导入成功的

环境中不能有和server-mysql相同的服务

最新回复(0)