编写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脚本
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上添加定时任务
输入命令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相同的服务