> 数据库 > MySQL >

mysql服务器定时异地备份

现有一台mysql服务器,需要每天备份到异地。环境,centos5.5 mysql

 

这个操作的原理:

 

首先进行本地备份,放到/data目录下面。再用rsync每天定时同步到另一台服务器上。

 

具体操作

 

每天本地自动备份,建立脚本/sh/mysqlbackup.sh,内容如下:

 

 #!/bin/sh
rq=` date +%Y%m%d `
BackupPath=/data/wordpress/$rq
mkdir $BackupPath                                  
chmod -R 777 $BackupPath                           
rm -rf `find /data/wordpress  -mtime 3 -print`
/usr/local/mysql/bin/mysqldump –skip-lock-tables -uroot -p12345678 –tab=$BackupPathwordpress

 

注:wordpress为需要备份的数据库名。在/data/目录下,先建这个目录,以放备份文件。

 

这个脚本执行完成,会在/data下面自动生成以日期为目录的备份文件,并且会自动删除3天前的备份。

 

 再使用rsync,备份这个目录到另外的服务器50.19.11.2,端口号为1000。建立脚本/sh/rsync.sh,内容如下:

 

rsync -avzp –delete -e ‘ssh -p 1000′ /data/root@60.10.101.12:/data

 

再用expect进行自动交互式操作。不需要输入密码,就可以自动执行了。再建立脚本/sh/expcet.sh,内容如下:

 

#!/bin/bash
expect -c ”
set timeout 1200;
spawn /sh/rsync.sh
expect {
\”*yes/no*\” {send \”yes\r\”; exp_continue}
\”*password*\” {send \”123456\r\“;}
}
expect eof;”

 

这样只要把/sh/mysqlbackup.sh和/sh/expcet.sh放到crontab里面就可以了。注意一下,本地备份的时间在先,异地同步的时间在后,要大概知道时间差是多少。



(责任编辑:IT)