#!/bin/sh MBL=/usr/local/mysql/bin/mysqlbinlog MYSQLHOST=192.168.56.1 MYSQLPORT=3306 MYSQLUSER=replication_user MYSQLPASS=replication_pass BACKUPDIR=/media/binlogs/server2/ # time to wait before reconnecting after failure RESPAWN=10 cd $BACKUPDIR echo "Backup dir: $BACKUPDIR " while : do LASTFILE=`ls -1 $BACKUPDIR|grep -v orig|tail -n 1` TIMESTAMP=`date +%s` FILESIZE=$(stat -c%s "$LASTFILE") if [ $FILESIZE -gt 0 ]; then echo "Backing up last binlog" mv $LASTFILE $LASTFILE.orig$TIMESTAMP fi touch $LASTFILE echo "Starting live binlog backup" $MBL --raw --read-from-remote-server --stop-never --host $MYSQLHOST --port $MYSQLPORT -u $MYSQLUSER -p$MYSQLPASS $LASTFILE echo "mysqlbinlog exited with $? trying to reconnect in $RESPAWN seconds." sleep $RESPAWN done nohup livebinlog.sh 2>&1 > /var/log/livebinlog/server2.log &
更复杂的脚本可以参考:
https://github.com/ardabeyazoglu/mysql-binlog-backup/blob/master/syncbinlog.sh