6

大規模で人気のあるデータベース主導の Web サイトがあるとします。サイトには昼夜を問わず人がいます。データベースへの読み取りと書き込みの両方を行うページにアクセスします。

日次データベース バックアップ計画を実装する場合、コールド バックアップを実行する必要があります。これは、バックアップの進行中にデータベースを一時的にシャットダウンするか、テーブルをロックすることを意味します。これにより、バックアップの実行中に新しいデータがデータベースに挿入されなくなります。

テーブルのロックやデータベースのオフラインが原因で失敗しないように、サイト コントローラーとモデルをコーディングするための適切な方法は何ですか? ある種のデータベース書き込みキュー システムなどを実装する必要がありますか? それとも、サイト全体を一時的にオフラインにしますか? または、何もロックまたはシャットダウンせずにライブ バックアップを実行しますか? 良いアプローチとは?

4

1 に答える 1

3

レプリケーションを使用します。これは簡単なシナリオです

1 つのマスター A、2 つのスレーブ B、C

  • 通常の操作中、アプリケーションは A、B、C の間で負荷を分散する必要があります。
  • バックアップ中、アプリケーションは A から読み書きしないでください
    • A をマスターから解放し、B をマスターに昇格させ、スレーブ C を変更して B をリッスンする
    • バックアップには A を使用します
    • バックアップ完了後
    • A を B からリッスンするように変更します (これは、A が今後スレーブになることを意味します)
  • A が B に追いついたら (これ以上の遅延はありません)、アプリケーションを変更して、A、B、C 間で再び負荷を分散します。

2日目は、サイクル全体を繰り返すだけで、もちろんマスターはBです.

于 2011-12-16T16:06:32.340 に答える