3.4.3. Cluster Failures
PostgreSQL では 12
、レプリカスロットは プライマリーサーバーでのみ許可され ます。つまり、PostgreSQL コネクターはデータベースクラスターのアクティブなプライマリーのみを参照できます。また、レプリケーションスロット自体もレプリカに伝播されません。プライマリーノードがダウンした場合、新しいプライマリーをプロモート( 論理デコードプラグインがインストールされ ている)とレプリケーションスロットが作成されると、コネクターを再起動して新しいサーバーを参照できます。
フェイルオーバーは重要な注意事項がいくつかあります。また、データを損失していないレプリケーションスロットがあることを確認できるまで、Debezium を一時停止する必要があります。フェイルオーバーの後、フェイルオーバーの管理がない限り、アプリケーションが 新しい プライマリーへの書き込みを許可する前に Debezium レプリケーションスロットを再作成するプロセスが含まれない限り、変更イベントが失われます。また、フェイルオーバーの状況において、Debezium が 以前のプライマリーが失敗する前 にスロットのすべての変更を読み取ることができることを検証する必要がある場合もあります。
失われた変更を回復および検証する信頼できる方法の 1 つとして、障害が発生したプライマリーのバックアップを、障害の発生した直前のポイントに復元することです。これにより、レプリケーションスロットを、消費されていない変更の有無を検査できます。いずれの場合も、書き込みを許可する前に、新しいプライマリーでレプリケーションスロットを再作成する必要があります。