MySQLのオンラインバックアップ・リカバリ<バックアップ編>

■mysqldumpによるバックアップ

【特徴】
・オンラインでバックアップ可能
・データベース領域全体やテーブル・データベースの部分単位でバックアップ可能
・SQL文がそのまま記述されている(SQL文を順に実行することでリストアを行う)

【コマンド】
mysqldump [options] db_name [tables]
mysqldump [options] --databases db_name1 [db_name2 db_name3...]
mysqldump [options] --all-databases

*引用:7.11. mysqldump — データベースバックアッププログラム

【オプション】

--single-transaction ダンプする前にBEGIN SQLステートメントを発行(トランザクションの開始)、InnoDBのようなトランザクションテーブルのみ有効
-master-data[=value] デフォルトは[=2] CHANGE MASTER TO 文がコメントアウトされる
--flush-logs バックアップ開始時にバイナリログのスイッチを行う
--all-databases データベース内のすべてのテーブルをダンプする
--lock-all-tables バックアップ中、全データベースをロックする
※MyISAMテーブルのようなトランザクションに対応していないテーブルを適切にバックアップする場合

 

【手順例】
1.データベース領域全体のバックアップ(リストア用)

# mysqldump -p --single-transaction --master-data=2 --flush-logs --all-databases > /backup/mysqldump.sql

2.バイナリログのバックアップ(ロールフォワードリカバリ用)
※mysqldumpでバックアップ取得後、次回完全バックアップまでのバイナリログ(スイッチしたバイナリログから)をバックアップしておく

# cp -p /var/lib/mysql/binary/binary.xxxxxx /backup/.

参考
7.11. mysqldump — データベースバックアッププログラム
現場で使える MySQL (DB Magazine SELECTION)