数据库定时备份方案及实践

方案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

原文地址:https://www.cnblogs.com/imoing/p/3387879.html