人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL(5.1) サーバの中に複数の全く異なった目的のデータベースが運用されている時、特定のデータベースだけ◯日前の状態に戻す、というような事はできますか?
データベースはInnoDBとMyIsamの混在状況です。
またバックアップは、LVMを用いたデータベースディレクトリ(/var/lib/mysql)のスナップショットを毎日保存しているものとします。

もし可能であるとしたら、その方法を教えてください。

●質問者: norisuke3
●カテゴリ:コンピュータ
✍キーワード:innodb LIB MyISAM MySQL サーバ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● b-wind
●60ポイント ベストアンサー

特定のデータベースだけ◯日前の状態に戻す、というような事はできますか?

出来ない。

これは MySQL に限らずほぼすべての RDBMS にいえること。

状態を戻す機能を備えている物も一部あるが、原則として一つのインスタンスが管理しているデータベースすべてを同時に

というのが基本。


もちろん「◯日前の状態」のバックアップデータがあれば、全く別のDBにレストアし

該当データベース部分のみ抽出、その後元のデータベースにその部分のみ差し替えという対処は出来る。


LVMを用いたデータベースディレクトリ(/var/lib/mysql)のスナップショットを毎日保存

FLUSH TABLES などのコマンドを用いてDBの持っているキャッシュとファイルシステムの同期は取っていますか?

取っていないならそれは強制シャットダウンした時と同様、壊れたDBでしかない。

壊れたDBからでもある程度の復旧作業は行うので、使える可能性はあるがそれはあくまで最悪の手段であり

バックアップとは呼ばない。


スナップショットを取得するなら、特定時点で停止状態の MySQL データすべての保存(コールドバックアップ)と

その時点からの、MySQL のバイナリログをスナップショットで取得という形にするべき。

コールドバックアップデータ+バイナリログによる復元であれば整合性を持った形でレストア可能。

◎質問者からの返答

> 出来ない。

> これは MySQL に限らずほぼすべての RDBMS にいえること。

まさに。実はこれが期待していた答え。できないということをちゃんと知りたかったんです。

でないと、それをする方法を探して無駄に時間を割いてしまうので。

しかも、他のRDBMSも同様という事で、RDBMSを使う上で、何が可能で何が不可能なのかちょっと見えました。

ありがとうございます。

それから、スナップショットに対するサジェスチョンですが、こちもありがとうございます。

私の作ったバックアップスクリプトの中では、

まず、flush tables with read lock; でデータベースを共有ロックし、

スナップショットを取って、show master status; で、バイナリログの位置を確認した後、

ロックを解除して、スナップショットからその論理ドライブをダンプし、

スナップショットを解放するという事をしています。

試行錯誤で作ったスクリプトですが、期待どうり、無事バックアップが安全に取れればと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ