PostgreSQL 9.1ストリーミングレプリケーションは、WALアーカイブなしで遅延後に追いつきますか?


16

環境:

Postgres 9.1クラスターでストリーミングレプリケーション/ホットスタンバイを使用しているときに、スタンバイノードがダウンしたとしましょう。これは1日間停止したままで、その間にマスターで多くのDMLが発生します。スタンバイのrecovery.confには「restore_command」エントリは含まれませんが(WALジャーナルファイルからの復元用)、「primary_conninfo」文字列は含まれます(ストリーミングレプリケーション用)。

質問:

マスターで1日変更した後、スタンバイを再び開始した場合。ストリーミングレプリケーションのみを使用して、「追いつく」(最終的にはマスターをミラーリングする状態になります)のでしょうか。または、WALファイルアーカイブを有効にし、停止中にアーカイブされたファイルを適用して通貨を確保する必要がありますか?

ここでWALアーカイブ/ストリーミングレプリケーションドキュメントを確認しましたが、WALアーカイブとストリーミングレプリケーションの両方を有効にする必要はないと述べていますが、WALファイルアーカイブを有効にせずにキャッチアップが発生するかどうかは不明です。

ありがとう!

回答:


9

はい、スタンバイの最後の更新以降に生成されたWALセグメントの数がpostgresql.confのwal_keep_segmentsの値よりも少ない場合(およびその場合のみ)、ストリーミングのみを使用して追いつきます。これは、ドキュメントのこのセクションで説明されています。複製


2
この答えは正しいですが、問題を強調しています。wal_keep_segmentsを渡すと、レプリケーションは停止します。ファイルベースのレプリケーションのセットアップは、マスターからの長時間の切断に耐えてバックアップするシステムが必要な場合、オプションではありません。
グレッグスミス

0

スタンバイノードでは、recovery.confにrestore_commandを設定してから、マスターpg_xlog(スタンバイにない)ファイルをrestore_commandが指すフォルダーにコピーできます。起動ノードを起動して入力すると、不足しているxlogファイルを簡単に見つけることができます

ps aux | grep postgres

「000000020000005200000025を待機しています」またはこのようなものが表示され、どのpg_xlogをマスターからスタンバイのrestore_commandパスにコピーする必要があるかがわかります。

wal_archivingを有効にすると、セットアップした瞬間からアーカイブが開始されます。


ファイルベースのWALアーカイブを使用し、スタンバイにrestore_commandを与えてWALファイルをロードすると、それが追いつくことを保証できることを理解しています。しかし、それは私の質問ではありません。ストリーミングレプリケーションのみを使用する場合にスタンバイが追いつくかどうかを知りたい(WALファイルシッピングなし、 'primary_conninfo'で指定されたレプリケーションストリームのみ)。
ザックB

番号。postgresはそれを行いません。レプリケーションに遅延がある場合は、ログファイルをコピーする必要があります。
-sftsz

0

いいえ、ストリーミングレプリケーションのインスタンスをセットアップしましたが、どういうわけか同期がとれなくなりましrsyncた。WALアーカイブのマニュアルを作成するまで、再び動作させることができませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.