首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

MySQL外地增量备份

2012-09-28 
MySQL异地增量备份#!/bin/sh#MySQL Infosqluserrootsqlpswroot/usr/bin/mysqladmin -u$sqluser -p$sqlps

MySQL异地增量备份

#!/bin/sh#MySQL Infosqluser=rootsqlpsw=root/usr/bin/mysqladmin -u$sqluser -p$sqlpsw flush-logs --default-character-set=GBKDATADIR=/data/mysqlBAKDIR=/home/backup/mysql/dailyTEMPDIR=/home/backup/mysql/tempBINLOGNAME='mysql-bin'cd $DATADIRFILELIST=$(cat $BINLOGNAME.index | cut -c3-)## COUNTER numberCOUNTER=0for file in $FILELISTdoCOUNTER=$(expr $COUNTER + 1)doneNextNum=0for file in $FILELISTdoNextNum=$(expr $NextNum + 1)if test "$NextNum" = "$COUNTER"thenecho "skip lastest"elsedest=$BAKDIR/$fileif test -e $destthenecho "skip exist $dest"elsecp $file $TEMPDIRfifidoneecho "backup mysql binlog ok"sleep 2scd $TEMPDIRtarname=binlog$(date +%y%m%d).tar.gztar czf $tarname ./mysql-bin*sleep 1s#ftp Infoftphost=111.111.11.11ftpname=xxxftppsw=pswcd $TEMPDIRftp -i -n <<!open $ftphostuser $ftpname $ftppswtype binaryput $tarnameclosebye!sleep 10secho "end upload"cd $TEMPDIRmv $BINLOGNAME* $BAKDIRrm -rf $tarnameecho "end"

??

说明:

mysqladmin -u$sqluser -p$sqlpsw flush-logs:mysql自动把内存中的日志放到日志文件binlog的最后一个文件里,并生成一个空的新日志文件,之后只需要备份前面的几个即可,最后一个因为是刚生成的,并且是空的,所以不需备份。

关于binlog可参考http://cxhyrf-sina-com.iteye.com/blog/1680055

?

大概思路:

????把datadir和bakdir目录中的binlog进行对比,如bakdir中没有,且该binlog不是最后一个,则把该binlog复制到tempdir中;这样tempdir中的binlog都是新增的binlog。之后把tempdir中的binlog进行打包压缩,ftp到另一个服务器上。

?

?

热点排行