ストリーミングレプリケーションの場合は、プライマリサーバおよびスタンバイサーバの両方でポリシーが有効になります。
プロファイルの内容の変更、プロファイルの作成と割り当て、ロックの解除、パスワードの変更は、プライマリサーバのみで実施できます。
ここでは、ストリーミングレプリケーション構成での設定方法について説明します。
ストリーミングレプリケーション用のユーザーに権限を付与します。
スタンバイサーバはプライマリサーバへ接続して、スタンバイサーバで検出した状態変更をプライマリサーバに反映します。状態変更のための接続にはストリーミングレプリケーション用のユーザー(primary_conninfoに指定するユーザー)が使用されます。このユーザーに権限を付与します。そのユーザーがグループロールpgx_update_profile_statusに直接SET ROLEできるようにしてください。
[実行例]
# GRANT pgx_update_profile_status TO repluser WITH SET TRUE;
この操作によってストリーミングレプリケーション用のユーザーはその他すべてのデータベースユーザーをロックしたり、ポリシー違反によるロック状態から解除することができるようになります。また、pgx_update_profile_statusグループロールのメンバ資格は、ストリーミングレプリケーション用のユーザーにだけ与えてください。
pg_hba.confにレコードを追加します。
スタンバイサーバからのコネクションを受け付けられるように、レコードを追加します。ストリーミングレプリケーションのためのレコードを複製し、userprofile_databaseパラメータのデータベース名を接続先データベース名として指定します。認証方式はパスワード認証以外を推奨します。
host replication repluser スタンバイサーバのアドレス 認証方式 # ストリーミングレプリケーション用 host postgres repluser スタンバイサーバのアドレス 認証方式 # 状態変更伝達用
参考
プライマリサーバとスタンバイサーバが切り離された場合でも、それぞれのサーバでプロファイルに基づく制限は適用されます。ただし、スタンバイサーバ単体ではパスワード変更や明示的なロックの解除が行えません。切り離された原因を取り除いてからプライマリサーバとの接続および業務を復旧し、パスワード変更や明示的なロックの解除を行ってください。
状態変更をプライマリサーバまたはスタンバイサーバに反映するための接続情報が、pg_stat_replicationビューのapplication_nameに“User profile status sender”として出力されます。pg_stat_replicationビューでストリーミングレプリケーションの状態を監視している場合は、“User profile status sender”の行は監視対象から除外してください。