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``
を含めることにより指定できます。

.. code:: yaml

   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``
ファイルに表示されるのとまったく同じように値を引用符で囲む必要があります。

.. code:: yaml

   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サービスファイルで

.. code:: shell

   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のマイナー更新
--------------------------------------------------

..  Warning `repmgr` minor-versioning is DIFFERENT: the THIRD digit (X.Y.**Z**) is the minor version::
   マイナーリリースのアップグレードには、同じメジャーリリース内のあるマイナーリリースから別のマイナーリリース5.3.1から5.3.2などにrepmgrの更新が含まれます。異なるメジャーリリースのマイナーリリース間のアップグレードたとえば5.2.1から5.3.2は、メジャーアップグレードです。 TPAは`repmgr` のメジャーバージョンのアップグレードをサポートしていません

.. ::
   特定のパッケージバージョンにアップグレードしようとする場合、 `config.yml` の`repmgr_package_version` が更新されて、目的のバージョンを反映していることを確認します。

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

.. code:: shell

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

詳細については、 :ref:`package version selection and upgrade <Upgrading your cluster>` のセクションを参照してください。

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

:ref:`component selection for upgrade <Upgrading your cluster>` のセクションを参照してください

詳細については、
