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 ...
シェルでもフリーズします) つまり、このレプリケーション設定の一時的な変更では、スタンバイで問題が発生している間にプライマリが「ストライキ」するのを防ぐという私の目標は達成されません。
このフリーズを回避する方法はありますか? ありがとうございます。