方案1
服务器上定时进行备份,备份机定时同步到本地
方案2
备份机定时登录到服务器备份数据库并同步到本地
方案1更具可实现性.
开工:
1,免密码登录
首先需要让备份机可以不输入密码就能登录远程服务器进行读文件.可通过证书登陆的方式实现。
2,定时备份
一下操作为在服务器上操作
本想为了安全性着想专门建立一个备份用账户,只有select权限,实际执行中发现备份还需要有lock权限,也就没有继续深究下去.
脚本内容如下:
#在文件名中加入日期防止重复
date=`date +%Y_%m_%d_%H%M%S`
#文件名
fileName="${date}all.sql"
#备份命令 此处为备份全部(-A参数表示备份全部)的
mysqldump -uroot --password=rootPassword -E -A > "/alidata/backup/mysql/${fileName}"
切记脚本的所有者要改为root,权限设置为700(只有root可以执行,编辑和修改)
设置定时任务
root# crontab -e
添加如下语句每天2:10分备份数据库
# backup mysql at 2:10 everyday
10 2 * * * /path/to/backup/shell
更详细的定时任务设置方法见
3,定时同步
定时同步的脚本内容如下
#打开一个ssh agent shell
#在centos上由于没有keychain这类的密钥管理工具所以每次都要打开ssh agent并添加密钥
eval `/usr/bin/ssh-agent -s`
#添加密钥
/usr/bin/ssh-add /data/backup/.ssh/id_rsa
#同步命令
rsync -avz --exclude=mysqlbackup.sh syncuser@serverHost:/alidata/backup/mysql /data/backup/
#同步完成后退出,否则每次执行此任务都会打开一个ssh agent
exit
定时任务内容:
#相比服务器上的备份需要延迟20分钟,毕竟备份也需要时间
30 2 * * * /path/to/sync/shell