MySQL 資料一覧
インクリメンタルバックアップ(差分バックアップ)の方法
2007/12/19更新
対応バージョン: 5.0.51
バックアップ運用を行うにあたりデータベースの総量が増えてくると毎回フルバックアップを取得するのに時間もかかりディスク容量も必要とする。
そのような場合、前回バックアップ以降はインクリメンタルバックアップを使用する方法がある。
インクリメンタルバックアップのログファイルは自動的に取得され、/usr/local/mysql/var配下に以下のようなファイル名で作成される。
-rw-rw---- 1 mysql mysql 14940 2007-12-13 12:43 mysql-bin.000001 -rw-rw---- 1 mysql mysql 117 2007-12-13 12:43 mysql-bin.000002 -rw-rw---- 1 mysql mysql 255 2007-12-13 15:22 mysql-bin.000003 -rw-rw---- 1 mysql mysql 117 2007-12-13 15:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql 3995 2007-12-18 19:03 mysql-bin.000005 -rw-rw---- 1 mysql mysql 325 2007-12-18 19:09 mysql-bin.000006 -rw-rw---- 1 mysql mysql 268 2007-12-18 19:12 mysql-bin.000007 -rw-rw---- 1 mysql mysql 22655 2007-12-18 19:35 mysql-bin.000008 -rw-rw---- 1 mysql mysql 152 2007-12-18 19:20 mysql-bin.index
最後のmysql-bin.indexはテキストファイルで、ログファイルの一覧(mysql-bin.000001〜000008)が記載されている。
このログファイルはMySQLサーバ起動時に1ずつインクリメントされ、前回のログファイルは使われなくなる。
使われなくなったログファイルはそのままではディスクを消費するだけなので、例えばフルバックを取得する際に--delete-master-logsオプションを付けることによって不要なファイルが削除される(ただしレプリケーション環境において当該サーバがマスタの場合、--delete-master-logsを使用するとスレーブとの同期が取れなくなる恐れがあるのでPURGE MASTER LOGSを使用する)。
# mysqldump --single-transaction --flush-logs --master-data \ --all-databases --delete-master-logs > backup.sql
尚、--flush-logsオプションはログファイルの切り替え指示、--master-dataオプションは以下のようにログファイル名をバックアップファイル中に出力する指示である。
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=98;
バックアップを伴わずにログファイルだけを切り替える場合は以下のようにする。
# mysqladmin flush-logs
関連資料・記事