Docker之mysql数据备份及恢复

编写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相同的服务

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值