MySQLのバイナリログコピースクリプト

MySQLのバイナリログを、コピーして保存するスクリプト。
mysqlbin コマンドで展開後、gzipで圧縮するのでコンパクトにして保存が出来る。
下記の例は前日分のバイナリログを所定のディレクトリに保存する。
なお、サーバの負荷上昇を避けるため、1ファイルごとに15秒のスリープを設定している。

#!/bin/bash

BINLOG_DIR='/var/mysql/data'
BACKUP_DIR='/home/backup-mysql-binlog'

MYSQLBINLOG='/usr/bin/mysqlbinlog'

find ${BINLOG_DIR}/mysqld-bin.[0-9]* -daystart -mtime +0 -mtime -2 -type f | while read binlog ; do
binlog_file=`basename ${binlog}`
    ${MYSQLBINLOG} $binlog | gzip -c > ${BACKUP_DIR}/${binlog_file}.sql.gz

    chown yoota:user ${BACKUP_DIR}/${binlog_file}.sql.gz
    sleep 15
done