1つのマスターと1つの(読み取り専用)スレーブでストリーミングレプリケーションを設定しています。現在、レプリケーションを監視する方法を探しています。ほとんどの場合、スレーブサーバーがまだ最新であることを確認します。
これを行うことは可能ですか?できればスレーブからですか?もしそうなら、どうですか?
ストリーミング複製に関するドキュメント は次のことを述べています:
キープアライブソケットオプションをサポートするシステムでは、 tcp_keepalives_idle 、 tcp_keepalives_interval および tcp_keepalives_count を設定すると、プライマリが接続の切断にすぐに気付くのに役立ちます。
この文脈で「すぐに気づく」とはどういう意味ですか?切断された接続が報告されるエラーログはありますか?
現在、レプリケーションを監視する方法を探しています。ほとんどの場合、スレーブサーバーがまだ最新であることを確認します。
レプリカラグを監視する場合、使用しているPostgresのバージョンに応じて、わずかに異なる答えを出すいくつかの方法があります。スタンバイで直接実行できる簡単なクエリは次のとおりです。
SELECT (CASE WHEN pg_last_xlog_receive_location() = pg_last_xlog_replay_location()
THEN 0
ELSE EXTRACT (Epoch FROM now() - pg_last_xact_replay_timestamp())
END) AS log_delay;
受信されたXLOGセグメントと適用されたXLOGセグメントの違いのこのチェックは、まだ受信されていないXLOGセグメントについて何も知らないため、このチェックは、プライマリへの接続が切断された場合など、「遅延」を報告しません。 -プライマリでpg_stat_replication
の追加のチェックがあり、これも役立つ場合があります。例を参照してください。 ここ 。
この文脈で「すぐに気づく」とはどういう意味ですか?
この文脈では、「すぐに気づく」とは、TCPクライアント(つまりスタンバイ))が相手側への接続が切断されたことに気付くまでにどのくらいの時間がかかるか、または経過しなければならないかを言います。ここでは、ドキュメントが本当に「スタンバイを支援する」ではなく「プライマリを支援する」と言っているはずだと思います。これは、スタンバイが切断された接続を検出してプライマリへの新しい接続を再確立する必要があるためです。)
参照 この関連する質問 キープアライブ設定が今回にどのように影響するかについて話します。
切断された接続が報告されるエラーログはありますか?
SR接続がドロップまたは再確立されたときに、プライマリマスターとスタンバイサイドの両方(特にlog_connections
/log_disconnections
が有効になっている場合)のポストマスターログにメッセージが表示されると思います。