repmgr#

TPAは、 failover_manager インスタンス変数がrepmgr に設定されているすべてのpostgresインスタンスにrepmgrをインストールします。これはデフォルト設定です。

repmgr 構成ファイルのディレクトリは、デフォルトで/etc/repmgr/<version> になります。ここで、 <version> は、このインスタンスにインストールされるpostgresのメジャーバージョンですが、インスタンスのrepmgr_conf_dir 変数を設定することにより変更できます。構成ファイル自分自身は常にrepmgr.conf と呼ばれます。

デフォルトのrepmgr構成は、ロール primary とロール replica で構成されたインスタンス間の自動フェイルオーバーをセットアップします。

repmgrパッケージバージョン#

デフォルトでは、TPAはrepmgrの最新バージョンをインストールします。

インストールされるrepmgrパッケージのバージョンは、 config.yml ファイルのcluster_vars セクションの下のrepmgr_package_version: xxx を含めることにより指定できます。

cluster_vars:
    …
    repmgr_package_version: 4.0.5-1.pgdg90+1
    …

aptまたはyumが受け入れるバージョン指定子を使用できます。

バージョンが一致しない場合は、 * ワイルドカードを追加してみてください。これは、パッケージバージョンに2:... のようなエポック修飾子がある場合に必要になることがよくあります。

repmgr構成#

次のインスタンス変数を設定できます。

repmgr_priority : sets priority in the config file repmgr_location : sets location in the config file repmgr_reconnect_attempts : sets reconnect_attempts in the config file, default 6 repmgr_reconnect_interval : sets reconnect_interval in the config file, default 10 repmgr_use_slots : sets use_replication_slots in the config file, default 1 repmgr_failover 構成ファイルでfailover を設定します、デフォルトautomatic

repmgr_conf_settings の追加設定もrepmgr構成ファイルに渡されます。

repmgrサービス構成#

repmgr_service_environment 環境変数をrepmgrサービスユニットファイルに設定します。環境変数は、 repmgr_service_environment 変数の下で、’キー-値’の方法で定義する必要があります。以下の例を参照してください。 repmgr_service_environment を使用して、TPAで認識されるかどうかにかかわらず、パラメーターを設定できます。 repmgrd.service ファイルに表示されるのとまったく同じように値を引用符で囲む必要があります。

cluster_vars:
  repmgr_service_environment:
    LD_PRELOAD: "/usr/edb/pge15/lib/libpq.so.5:/usr/edb/pge15/lib/libpqagent86.so"
    AGENT86_SHARD_FILE: "/var/lib/pgsql/shard.dat"

repmgrサービスファイルで

root@kaput:~# cat /etc/systemd/system/repmgr.service
[Unit]
Description=Postgres replication manager
After=postgres-monitor.service
Wants=postgres-monitor.service

[Service]
Type=simple
User=postgres
Group=postgres
Environment=AGENT86_SHARD_FILE=/var/lib/pgsql/shard.dat
Environment=LD_PRELOAD=/usr/edb/pge15/lib/libpq.so.5:/usr/edb/pge15/lib/libpqagent86.so
StandardOutput=syslog
ExecStart=/usr/lib/postgresql/17/bin/repmgrd -f /etc/repmgr/17/repmgr.conf --verbose --daemonize=false
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

PGDインスタンスの## repmgr

PGDインスタンスでは、repmgr_failover はデフォルトでmanual に設定されます。

tpaexec upgrade を使用したrepmgrのマイナー更新#

目的のバージョンを追加の引数としてtpaexec upgrade コマンドに渡すこともできます。

tpaexec upgrade <cluster_dir> \
    -e repmgr_package_version="<desired version>"\
    --components=repmgr

詳細については、 package version selection and upgrade のセクションを参照してください。

アップグレードのためにrepmgrを選択するには、 tpaexec upgrade コマンドに渡される--components フラグにrepmgr またはall が含まれていることを確認します

component selection for upgrade のセクションを参照してください

詳細については、