Mysql异地定时备份方法

两台linux服务器:

  • 一台199.20.30.222(mysql服务器)
  • 一台199.20.30.226(与mysql互通的一台server)

思路:mysql本地做一份备份;226Server做一份同步备份,脚本放在222上面,定时任务也设置在222上面。

(1)mysql本地备份:
1
2
3
4
#!/bin/sh
#mysql_backup
DATE=`date +%Y%m%d`
/opt/mysql/bin/mysqldump --opt jsweb -u root > /opt/mysqlbackup/$DATE.sql
(2)将本地备份同步到远端226上面:
1
2
3
4
5
#!/bin/bash
#date:2013/09/24
#function:The script is used copying mysqlbackup to 226
DATE=`date +%Y%m%d`
scp /opt/mysqlbackup/$DATE.sql root@199.20.30.226:/data/2013backup/mysql/
(3)222上面设置定时任务:
1
2
3
vim/etc/crontable OR crontable -e
30 1 * * * /bin/sh /home/jiaoben/backup.sh ===============每天1:30执行
30 3 * * * /bin/sh /home/jiaoben/scp.sh ===============每天3:30执行

 注意:两个linux之间相互拷贝文件,使用scp工具必须输入远端密码,所以在进行(2)时,需要规避输入密码,否则自动备份到remote不会生效,
 本人采用的方法:使两个服务器互相信任,执行scp时,就可以免输入密码。

1
2
3
4
5
ssh-keygen -t rsa
cd /root/.ssh/
scp id_rsa.pub root@199.20.30.226:/root/ssh/
ssh root@199.20.30.226
mv /root/.ssh/id_isa_pub /root/.ssh/authorized_key

时间过长备份的mysql就需要定时清理

1
2
find /opt/mysqlbackup/ -type f -name \*.sql -mtime +10 -exec rm -fr {} \;
find /opt/mysqlbackup/ -type f -name "*.sql" -mtime +10 -exec rm -fr {} \;