レプリケーションが存在しない場合でも、プライマリ PostgreSQL に書き込むことができるようにするにはどうすればよいですか?

レプリケーションが存在しない場合でも、プライマリ PostgreSQL に書き込むことができるようにするにはどうすればよいですか?

reload私のスクリプトは認証エラーのためPostgreSQLに失敗したことが判明しました。したがって、以下はすべて誤った問題postgresql のバグを修正した後、postgresql は問題なくソロ プライマリ サーバーに書き込むことを許可しました。Nikita Kipriyanov の協力に感謝しますが、以下の単語は省略してもかまいません。


私の目標は、スタンバイ サーバーが障害を起こしている間も、マスター サーバーが書き込み要求を処理できるようにすることです。synchronous_commit =手動で設定してoff、プライマリ サーバーをリロードできることに気付きました。

その他の構成repmgr.confには以下が含まれますrepmgr: use_replication_slots=yes

したがって、スタンバイ サーバーは、repmgrプライマリ サーバーに障害発生時に wal-logs を予約するように要求して作成されます。状況は予想どおりに進みません。プライマリに書き込み操作をコミットでき、スタンバイはプライマリからそれを複製できますが、バグがあり、書き込みコマンドが常にここで停止します。

postgres=# CREATE DATABASE ANYTHING;

Ctrl+を押すまでD、次の行を含むプロンプトは再び表示されませんでした。

^CCancel request sent
WARNING:  canceling wait for synchronous replication due to user request
DETAIL:  The transaction has already committed locally, but might not have been replicated to the standby.
CREATE DATABASE
postgres=#

そのため、プライマリに書き込もうとすると常にフリーズしてしまいますsynchronous_commit = off。(psql -c ...シェルでもフリーズします) つまり、このレプリケーション設定の一時的な変更では、スタンバイで問題が発生している間にプライマリが「ストライキ」するのを防ぐという私の目標は達成されません。

このフリーズを回避する方法はありますか? ありがとうございます。

関連情報