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