0

システム障害が発生した場合に後で復元するために、サーバー全体(public_html、sqlファイルなど)のスナップショットを毎日取得するとします。

コミットされていないトランザクションが発生しているときにスナップショットを取得した場合、破損したMySQL InnoDBを復元できる可能性はありますか?それとも、InnoDBは正常に動作し、復元時に「不完全な」トランザクションを破棄しますか?

4

2 に答える 2

1

データベースの観点からは、クリーンでないシャットダウン(つまり、電源がオフになった)と接続の喪失に対処しているため、コミットされていないすべてのトランザクションが破棄されます。

極低温スリープですべてをフリーズするようなサーバーのスナップショットを取得している場合、復元後、データベースは存在しないアプリケーションと通信することを期待してウェイクアップします。

私が見ることができる唯一の問題は、トランザクション自体からではなく、データベース自体がファイル内にあるという事実からです。ディスクに半分書き込まれたファイルをフリーズするとどうなりますか。それがどのように問題になるのかがわかります。一方、停電についても同じことが当てはまり、データベースもそれを乗り切る必要があるため、これを防ぐためのアーキテクチャ設計がおそらく実施されています。

于 2012-04-18T06:03:21.253 に答える
0

私の知る限り、トランザクション中、コミットが発生するまでデータベースには何も保存されません。それがまさにACIDコンプライアンスです。したがって、トランザクション中にデータベースファイルが書き込まれることはありません。

また、私の意見では、データベースの「スナップショット」はダンプを介して実行する必要があります。私はサーバー管理者ではないので、事実はわかりませんが、その方法でデータを復元する方がはるかに安全です。

MySQLは私にとって灰色の領域ですが、SQL Serverには自信があります。したがって、SQL Serverには独自のバックアップ方法があるため、これを事実として受け取らないでください。

于 2012-04-18T05:56:51.660 に答える