Step 1 导出数据
当MySQL运行在Docker中时
docker exec -it mysql mysqldump -uroot -p密码 数据库名 > /home/数据库名.sql
没有运行在Docker中时,只需要执行后半部分常规的mysqldump即可。
Step 2 将数据scp到另一台服务器
这里用S指代source服务器,D指代destination服务器。
首先,获取S的公钥
ssh-keygen -t rsa
然后将S的公钥复制到D的/root/.ssh/authorized_keys文件中,之后就可以免密进行scp
scp /home/数据库名.sql root@D的IP地址:/home/数据库名.sql
Step 3 将以上两步编写为sh脚本
#!/bin/bash
# Name:XXX
# 备份XXX数据库
docker exec -it mysql mysqldump -uroot -p密码 数据库名 > /home/数据库名.sql
scp /home/数据库名.sql root@D的IP地址:/home/数据库名.sql
Step 4 添加crontab定时任务
注意crontab语法,参考这篇文章
查看日志是否有报错,可能会报属组属主,rwx权限等错误。一般将属组属主都改为root,rwx改为644即可。可以将cron表达式先改成每分钟,检查效果,之后再改回实际时间。