Closed2

RDS レプリケーションの同期・非同期について

TKworksTKworks

フェイルオーバーにおいて、プライマリインスタンスが更新された直後にプライマリインスタンスが停止すると、セカンダリに同期されるはずだったデータは消失する?

結論

消失しない

RDS のマルチAzでは、同期レプリケーションを採用している (後述)。

同期レプリケーションでは、プライマリが更新された後、スタンバイの更新が確定した後に応答する。

したがって、プライマリ・セカンダリ間でデータの整合性が崩れることはないので、

セカンダリに同期されるはずだったデータが消失することはない。

質問のケースだと、おそらくプライマリに対する更新自体が失敗したというレスポンスが返ることになる。

同期レプリケーション

  • レプリケーションが完了するのを待つ
  • マスターとスレーブ間の通信の分だけ遅くなる
    • とはいえ、RDSは、データセンター間を高速な回線で繋いでいて、数msの遅延と非常に高速

非同期レプリケーション

  • レプリケーション完了を待たずに、次の処理(クエリ等)を受け付ける
  • 通信のオーバーヘッドがない

ちなみに Aurora RDS の場合は、インスタンスとレプリカ間でストレージを共有するので、

「更新のたびにインスタンスにデータを同期」という処理をしなくてよい

このスクラップは2023/11/30にクローズされました