代码改变世界

使用mysqlbinlog远程备份binlog

2022-03-04 20:17  abce  阅读(199)  评论(0编辑  收藏  举报
#!/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