ページの先頭行へ戻る
Symfoware Server V12.10.0 ユーザログ説明書

1.4 レプリケーションとの関係

レプリケーションで直接接続された2つのインスタンス間では、それぞれで抽出されたファイルは完全に同一であることを保証します。

これを実現するための機構があり、そのためにパラメータの設定が必要です。ここでは、このことを説明します。

レプリケーションの上流側のインスタンスでは、下流側のインスタンスのWALに書き込まれた範囲でのみユーザログを抽出するようにします。上流と下流とは、プライマリとそれに接続するスタンバイというケースと、カスケードレプリケーションの直接的に接続された2つのスタンバイの関係のことを指します。この制約がないと前述の同一性を保証できません。例えば、同期レプリケーションを構成する2つのインスタンスがあって、トランザクションのコミット処理中にダウンしたケースを考えます。この設定では、ディスク上ではプライマリがCOMMITログを出し、スタンバイがCOMMITログを出していない瞬間がありえます(もちろん、この瞬間はアプリケーションから見た場合にはCOMMITが完了していない状態です)。この状態でプライマリ側の抽出デーモンがCOMMITログを検出して直ぐにユーザログを出したならば、そのユーザログはCOMMIT状態です。しかし、この直ぐ後にプライマリがダウンしてスタンバイが昇格したならば、昇格した側ではCOMMITログが存在しないのでROLLBACK状態のユーザログを抽出してしまいます。

このようなことを防ぐために、下流側でも書き込みが完了したWALの範囲内でのみユーザログの抽出を行います。この制御のために、抽出デーモンプロセスに対して少なくとも自分よりも下流になるインスタンスの名前をuserlog.standby_namesパラメータに登録してください。このパラメータのより詳細な仕様は、“第2章 セットアップ”を参照してください。