データベースのバックアップについて、あまり意識したことが無かったので、メモしておく。
ダンプファイルとトランザクションログ
MySQLのデータを完全にバックアップするには、ダンプファイルとトランザクションログが必要である。
以下より、それぞれのファイルの役割について説明する。
ダンプファイル
ダンプファイルとはメモリやレジスタ、ファイル、ディスクなどのある瞬間の中身を丸ごと記録したファイルである。
MySQLでは、mysqldumpコマンドを使って、データベースを丸ごとエクスポートすることが出来る。
DBのダンプファイルを作成するには、以下のようにする。
mysqldump -u ユーザ名 -p DB名 > 出力先ファイル名
ダンプファイルからデータを復元するには、以下のようにする。
mysql -u ユーザ名 -p DB名 < ダンプファイル名
通常、ダンプファイルはバッチ処理で定期的に作成する。
トランザクションログ
トランザクションログ(データベースログやバイナリログとも呼ばれる)とは、クラッシュやハードウェア故障があったとしてもデータベース管理システムのACID特性を保障するための操作履歴を指す。
定期的にバッチ処理でダンプファイルを作成していても、いざデータベースへの障害が起こった場合、ダンプファイルの作成から時間が経過していればしているほど、データの巻き戻りが多く発生してしまうが、トランザクションログを追いかけることで直近で発行されたSQLを調べることが出来、巻き戻りを無くすことが出来る。
MySQLでは、MySQLの設定ファイルであるmy.cnfファイルに以下の設定を追加することでトランザクションログを保存することが出来る。
log-bin=mysql-bin
追加で以下を書いておくと、直近の7日分のみを保存することが出来る。
トランザクションログが肥大化すると、かなり容量を食うので書いておくことを推奨する。
expire_logs_days=7
参考
ダンプファイルとは 〔 .dmpファイル 〕 〔 dmpファイル 〕 – 意味/解説/説明/定義 : IT用語辞典
トランザクションログ – Wikipedia
mysql binlogからDB復旧 – Qiita
MySQLのdump(ダンプ)でデータをバックアップ/復元する MySQL基礎の基礎 – 久保清隆のブログ