質問: MySQL(5.1) サーバの中に複数の全く異なった目的のデータベースが運用されている時、特定のデータベースだけ◯日前の状態に戻す、というような事はできますか? データベースはInnoDBとMyIsamの混在状況です。 またバックアップは、LVMを用いたデータベースディレクトリ(/var/lib/mysql)のスナップショットを毎日保存しているものとします。 もし可能であるとしたら、その方法を教えてください。
回答: > > 特定のデータベースだけ◯日前の状態に戻す、というような事はできますか? > > > 出来ない。 これは MySQL に限らずほぼすべての RDBMS にいえること。 状態を戻す機能を備えている物も一部あるが、原則として一つのインスタンスが管理しているデータベースすべてを同時に というのが基本。 もちろん「◯日前の状態」のバックアップデータがあれば、全く別のDBにレストアし 該当データベース部分のみ抽出、その後元のデータベースにその部分のみ差し替えという対処は出来る。 > > LVMを用いたデータベースディレクトリ(/var/lib/mysql)のスナップショットを毎日保存 > > > FLUSH TABLES などのコマンドを用いてDBの持っているキャッシュとファイルシステムの同期は取っていますか? 取っていないならそれは強制シャットダウンした時と同様、壊れたDBでしかない。 壊れたDBからでもある程度の復旧作業は行うので、使える可能性はあるがそれはあくまで最悪の手段であり バックアップとは呼ばない。 スナップショットを取得するなら、特定時点で停止状態の MySQL データすべての保存(コールドバックアップ)と その時点からの、MySQL のバイナリログをスナップショットで取得という形にするべき。 コールドバックアップデータ+バイナリログによる復元であれば整合性を持った形でレストア可能。