【需求】每日0点,自动备份A服务器上MySQL的某数据库数据,并将备份文件备份至B服务器上。
【思路】编写备份脚本→配置定时任务
【实现步骤】
-
在A服务器上编写备份脚本
#!/bin/bash #设置mysql的备份保存目录 folder=/home/backup/database cd $folder day=$(date +%Y%m%d) #创建名称为当前日期的文件夹 mkdir -p "$day" cd $day #数据库服务器ip host=A服务器IP #用户名 user=root #密码 password=root密码 #要备份的数据库名 db=backupdb #执行备份语句,备份文件名称为backupdb.sql mysqldump -h$host -u$user -p$password $db > ./backupdb.sql #备份数据至B服务器,名称为backupdb+当日日期.sql scp backupdb.sql B服务器用户名@B服务器IP:/opt/data/platform-data/backupdb$day.sql
- 执行脚本,输入B服务器密码(scp时需要),可执行成功,实现数据备份并将文件拷贝至B服务器。
但是如果想要定时执行,那么就没办法每次输入密码,所以需要配置下设置scp自动输入密码,参见:https://jingyan.baidu.com/article/90bc8fc824e2dab752640c3f.html
配置好后,就可以无需密码直接成功执行脚本了。 - 配置定时任务
- 输入service cron status查看服务运行状态。
- sudo vim /etc/crontab,将新的任务写入文件(这里的cron表达式是每分钟执行一次)
- 最后保险起见,sudo service cron restart重启cron服务。
若出现不执行的情况,可以查看cron的日志,tail -f /var/log/cron.log
若没有这个日志文件,需开启日志(sudo vi /etc/rsyslog.d/50-default.conf,将cron.*取消注释)后,执行service rsyslog restart重启,即可正常查看日志,排查问题。