mysqldumpによるバックアップ

前項ではmysqlhotcopyによるバックアップを検討しましたが、

「今動いてるシステムのバックアップバッチと同じようにして下さい」との指示が来ました。

・・・・ということで、変えます。

方法は、mysqldump+オプションもろもろ。

#!/bin/sh

backupdate=`date +%Y%m%d%H%M`

/usr/bin/mysqldump --user=root --password=****** --single-transaction --hex-blob --flush-logs --default-character-set=utf8 --all-databases > /root/backup/mysql-dump_$backupdate.sql

各オプションは、こんな意味だそうです
(参考)http://tech.lampetty.net/tech/index.php/archives/292

    • single-transaction トランザクションの一貫性保持用
    • hex-blob SJIS系のバイナリ表記指定。これがないと壊れる模様
    • flush-logs MySQL ダンプ前にサーバ内のログファイルをフラッシュ(要するにリセット)する

 「フラッシュ」の意味が、漠然とイメージはできますが判然としなかったので調査
http://www.navicat.jp/mysql/manual/win8/Flush.html


sqlが出力されたので、これをtar.zgで保管するために、以下2行追加

tar zPcvf mysql-dump_$backupdate.tar.gz /root/backup/mysql-dump_$backupdate.sql
rm /root/backup/mysql-dump_$backupdate.sql

tar のオプションPは、「tar: メンバ名から先頭の `/' を取り除きます」というメッセージ出力抑制。
(参考)http://becomehappy.orz.hm/smithlog/article.php?id=202

シェルを作ってからの先は、http://centossrv.com/mysql-backup.shtml に倣ってcron設定