PG-REX運用補助ツール 14 利用マニュアル

目次

運用補助ツールとは?

PG-REX運用補助ツールとは、PG-REXの運用手順の簡易化を目的とした以下のコマンド群です。

機能概要

各コマンドの概要を以下に示します。

  1. pg-rex_primary_start

    本コマンドを実行したノードで、PG-REXをPrimaryとして起動する。

  2. pg-rex_standby_start

    本コマンドを実行したノードで、PG-REXをStandbyとして起動する。

  3. pg-rex_stop

    PG-REXのPrimaryまたはStandbyを停止する。

  4. pg-rex_archivefile_delete

    データベースの復旧に必要のないアーカイブログを移動または削除する。

  5. pg-rex_switchover

    PG-REXのノード切り替えを実施する。

導入方法

インストール

動作確認済み環境

パッケージのインストール

PG-REX運用補助ツールを使用するためにインストール必須のRPMパッケージを以下に示します。

  1. pg-rex_operation_tools_script-14.1-1.el8.noarch.rpm
  2. IO_Tty-1.11-1.el8.x86_64.rpm
  3. Net_OpenSSH-0.62-1.el8.x86_64.rpm

※バージョンは適宜読み替えてください。

PG-REX運用補助ツールのRPMをインストールします。インストールは以下の順序で行います。

# dnf install pg-rex_operation_tools_script-14.1-1.el8.noarch.rpm IO_Tty-1.11-1.el8.x86_64.rpm Net_OpenSSH-0.62-1.el8.x86_64.rpm

PG-REX運用補助ツールのRPMパッケージをインストールすると、コマンドと設定ファイルは以下のように配置されます。

/usr
   └-local
      └-bin
         └-pg-rex_primary_start
         └-pg-rex_standby_start
         └-pg-rex_stop
         └-pg-rex_archivefile_delete
         └-pg-rex_switchover

/etc
   └- pg-rex_tools.conf

設定ファイルの編集

環境にあわせて、/etc/pg-rex_tools.confの設定を行います。各項目の詳細は設定ファイルを参照してください。設定例を以下に示します。

$ cat /etc/pg-rex_tools.conf
D_LAN_IPAddress = 192.168.2.1 , 192.168.2.2
IC_LAN_IPAddress = (192.168.1.1, 192.168.1.2) , (192.168.3.1, 192.168.3.2)
Archive_dir = /dbfp/pgarch/arc1
IPADDR_STANDBY = enable
PGPATH = /usr/pgsql-14/bin
PEER_NODE_SSH_PASS_MODE = passfile
PEER_NODE_SSH_PASS_FILE = /root/.pgrex/peer_passwd
BACKUP_NODE_SSH_PASS_MODE = passfile
BACKUP_NODE_SSH_PASS_FILE = /root/.pgrex/bkup_passwd
PG_REX_Primary_ResourceID = pgsql-clone
PG_REX_Primitive_ResourceID = pgsql
IPADDR_PRIMARY_ResourceID = ipaddr-primary
IPADDR_REPLICATION_ResourceID = ipaddr-replication
IPADDR_STANDBY_ResourceID = ipaddr-standby
PING_ResourceID = ping-clone
STONITH_ResourceID = fence1-ipmilan , fence2-ipmilan
HACLUSTER_NAME = pgrex_hacluster

ネットワーク接続の登録

PG-REX運用補助ツールが相手ノードの操作や確認をD-LANを使用して行うため、事前に両ノードのrootユーザの.ssh/known_hostsに相手先のD-LANのIPアドレスに対する接続登録をする必要があります。

# ssh 192.168.2.2   ←相手先のD-LANのIPアドレスを指定
The authenticity of host '192.168.2.2 (192.168.2.2)' can't be established.
ECDSA key fingerprint is *******
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
↑[yes]を入力し[Enter]キーを押下
Warning: Permanently added '192.168.2.2' (ECDSA) to the list of known hosts.
root@192.168.2.2's password:    ←[Ctrl]キーと[C]キーを同時に押下

アンインストール

RPMパッケージのアンインストールを行います。

# dnf remove pg-rex_operation_tools_script-14.1-1.el8.noarch IO_Tty-1.11-1.el8.x86_64 Net_OpenSSH-0.62-1.el8.x86_64

コマンドリファレンス

  1. pg-rex_primary_start
  2. pg-rex_standby_start
  3. pg-rex_stop
  4. pg-rex_archivefile_delete
  5. pg-rex_switchover

pg-rex_primary_start

概要

本コマンドを実行したノードで、PG-REXをPrimaryとして起動します。

形式
pg-rex_primary_start [-h][-v][XmlFilePath]
引数
実行例
# pg-rex_primary_start
root@192.168.2.2's password:
パスワードが入力されました
1. Pacemaker および Corosync が停止していることを確認
...[OK]
2. 稼働中の Primary が存在していないことを確認
...[OK]
3. Primary として稼働することが出来るかを確認
...[OK]
4. 起動禁止フラグの存在を確認
...[OK]
5. Pacemaker 起動
...[OK]
6. Primary の起動確認
...[OK]
ノード(pgrex01)が Primary として起動しました
# pg-rex_primary_start PG-REX_pm_pcsgen_env.xml
root@192.168.2.2's password:
パスワードが入力されました
1. Pacemaker および Corosync が停止していることを確認
...[OK]
2. 稼働中の Primary が存在していないことを確認
...[OK]
3. 起動禁止フラグの存在を確認
...[OK]
既に HAクラスタ があります
再作成しても宜しいでしょうか? (y/N) y
4. HAクラスタ の破棄
...[OK]
5. HAクラスタ の作成
...[OK]
6. Pacemaker 起動
...[OK]
7. リソース定義 xml ファイルの反映
...[OK]
8. Primary の起動確認
...[OK]
ノード(pgrex01)が Primary として起動しました

pg-rex_standby_start

概要

本コマンドを実行したノードで、PG-REXをStandbyとして起動します。

形式
pg-rex_standby_start [[-n] [-r] [-b] | -c] [-d] [-s] [-h] [-v]
引数
実行例
# pg-rex_standby_start
root@192.168.2.1's password:
パスワードが入力されました
1. Pacemaker および Corosync が停止していることを確認
...[OK]
2. 稼働中の Primary が存在していることを確認
...[OK]
3. 起動禁止フラグが存在しないことを確認
...[OK]
4. DB クラスタの状態を確認
4.1 現在のDBクラスタのまま起動が可能か確認
DB クラスタが存在していません
...[NG]
4.2 巻き戻しを実行することで起動が可能か確認
DB クラスタが存在していません
...[NG]
4.3 ベースバックアップを取得することが可能か確認
...[OK]

以下の方法で起動が可能です
b) ベースバックアップを取得してStandbyを起動
q) Standbyの起動を中止する
起動方法を選択してください(b/q) b
5. IC-LAN が接続されていることを確認
...[OK]
6. Primary からベースバックアップ取得
22631/22631 kB (100%), 1/1 tablespace
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
...[OK]
7. Primary のアーカイブディレクトリと同期
000000010000000000000002.partial
00000002.history
000000020000000000000003.00000028.backup
000000010000000000000001
000000020000000000000002
000000020000000000000003
...[OK]
8. Standby の起動 (アーカイブリカバリ対象 WAL セグメント数: 1)
...[OK]
9. Standby の起動確認
...[OK]
ノード(pgrex02)が Standby として起動しました

pg-rex_stop

概要

本コマンドを実行したノードで、PG-REXのPrimaryまたはStandbyを停止します。

形式
pg-rex_stop [-f][-h][-v]
引数
実行例
# pg-rex_stop
Primary を停止します
1. Pacemaker 停止
...[OK]
2. Pacemaker 停止確認
...[OK]
PG-REX の Primary (pgrex01)を停止しました

pg-rex_archivefile_delete

概要

本コマンドを実行したノードで不要なアーカイブログを削除します。不要なアーカイブログとは、PG-REXのPrimaryとStandbyのDBクラスタ、およびコマンド実行時に指定したベースバックアップのリカバリに不要なアーカイブログです。指定したベースバックアップの取得時点よりも過去に取得したベースバックアップは使用できなくなることに注意してください。PrimaryとStandbyの両方がSSH接続可能である必要があります。

コマンド実行時にベースバックアップの場所の指定を省略した場合は、対話形式での指定となります。対話形式でも省略した場合は、PrimaryとStandbyのみを対象にして不要なアーカイブログを削除します。ベースバックアップの場所がリモートサーバの場合は、環境設定ファイルのBACKUP_NODE_SSH_PASS_MODEに設定した認証方式でリモートサーバにアクセスします。

本コマンドには、不要なアーカイブログを削除するモード(削除モード)と移動するモード(移動モード)があります。移動モードを指定した場合は、アーカイブログ格納ディレクトリ直下に現在日時のディレクトリを作成し、当該ディレクトリに不要なアーカイブログが移動されます。

形式
pg-rex_archivefile_delete {-m|-r}[-f][-D DBclusterFilepath][-h][-v] [[Hostname:]BasebackupPath]
引数
実行例
# pg-rex_archivefile_delete -m

**** 1. 実行準備 ****
移動モードで実行します
ベースバックアップが存在するリモートサーバを入力してください
(入力しなければ "localhost" を設定します)
>
ベースバックアップの場所の絶対パスを入力してください
(入力しなければバックアップ指定無しとして実行されアーカイブが削除されるため、
以前に取得したベースバックアップが使用できなくなります)
>
環境設定ファイル (pgrex_tools.conf) を読み込みます
root@192.168.2.2's password:
パスワードが入力されました
両ノードの名前を取得します
cib.xml ファイルを読み込みます
ベースバックアップの場所を指定せずに実行すると、
自身のノード "pgrex01" と相手のノード "pgrex02" の
現時点の PGDATA "/dbfp/pgdata/data" を基準にしてアーカイブログを削除することになります
アーカイブログを削除しますか (y/N) : y

**** 2. WAL ファイル名の取得 ****
自身のノード "pgrex01" の現時点の PGDATA "/dbfp/pgdata/data" からリカバリに必要な最初の WAL ファイル名を取得します
"00000002000000000000000C"
相手のノード "pgrex02" の現時点の PGDATA "/dbfp/pgdata/data" からリカバリに必要な最初の WAL ファイル名を取得します
"000000020000000000000003"

**** 3. 削除基準の算出 ****
削除基準を "000000020000000000000003" としました

**** 4. アーカイブログの移動 ****
削除対象のリストに "000000010000000000000002" を追加します
削除対象のリストに "000000020000000000000002" を追加します
削除対象のリストに "000000010000000000000001" を追加します
移動先ディレクトリ "/dbfp/pgarch/arc1/20130826_163510" を作成しました
-- 移動 -- 000000010000000000000002
-- 移動 -- 000000020000000000000002
-- 移動 -- 000000010000000000000001
アーカイブログの移動に成功しました
移動モード実行のため、移動したファイルは"/dbfp/pgarch/arc1/20130826_163510" に格納されています
# pg-rex_archivefile_delete -r pgrex03:/pgdata/backup_data

**** 1. 実行準備 ****
削除モードで実行します
環境設定ファイル (pg-rex_tools.conf) を読み込みます
root@192.168.2.2's password:
パスワードが入力されました
両ノードの名前を取得します
cib.xml ファイルを読み込みます

**** 2. WAL ファイル名の取得 ****
指定されたバックアップからリカバリを行うために必要な最初の WAL ファイル名を取得します
root@pgrex03's password:
パスワードが入力されました
"000000020000000000000004"
自身のノード "pgrex01" の現時点の PGDATA "/dbfp/pgdata/data" からリカバリに必要な最初の WAL ファイル名を取得します
"000000020000000000000003"
相手のノード "pgrex02" の現時点の PGDATA "/dbfp/pgdata/data" からリカバリに必要な最初の WAL ファイル名を取得します
"00000002000000000000000C"

**** 3. 削除基準の算出 ****
削除基準を "000000020000000000000003" としました

**** 4. アーカイブログの削除 ****
削除対象のリストに "000000010000000000000001" を追加します
削除対象のリストに "000000010000000000000002" を追加します
削除対象のリストに "000000020000000000000002" を追加します
-- 削除 -- 000000010000000000000001
-- 削除 -- 000000010000000000000002
-- 削除 -- 000000020000000000000002
アーカイブログの削除に成功しました

pg-rex_switchover

概要

Standbyの再組み込み時にベースバックアップを取得せずにPG-REXのノード切り替えを実行します。ベースバックアップを取得しないことで、ノード切り替え時間の短縮を実現します。

本コマンドは、PG-REXのPrimaryとStandbyのどちらのノードでも実行することができます。

形式
pg-rex_switchover [-h][-v]
引数
実行例
# pg-rex_switchover
root@192.168.2.2's password:
パスワードが入力されました
**** 実行準備 ****
1. 環境設定ファイル (pg-rex_tools.conf) の読み込みと両ノードの名前を取得
...[OK]
2. 現在およびノード切り替え後のHAクラスタ状態を確認

[ 現在 / ノード切り替え後のHAクラスタ状態 ]
 Primary : pgrex01 -> pgrex02
 Standby : pgrex02 -> pgrex01

ノード切り替え中は可用性が保証されません。
ノード切り替えを実行してもよろしいでしょうか? (y/N) y

**** ノード切り替えを実行 ****
3. Pacemaker の監視を停止
...[OK]
4. Primary (pgrex01) の PostgreSQL を停止
...[OK]
5. Pacemaker の監視を再開しノード切り替えを実行
...[OK]
6. pgrex02 が新 Primary になったことを確認

**** pgrex02 が Primary として起動しました ****

7. pgrex01 の Pacemaker を停止
...[OK]
8. pgrex01 で Standby を起動
00000011000000000000000C
00000012000000000000000E
00000013.history

**** pgrex01 が Standby として起動しました ****

****************************************
**** ノード切り替えが正常に完了しました ****
****************************************

[ 現在のHAクラスタ状態 ]
 Primary : pgrex02
 Standby : pgrex01

設定ファイル

PG-REX運用補助ツールで利用する設定ファイルについて以下に示します。

  1. 格納場所 : /etc
  2. ファイル名 : pg-rex_tools.conf

設定項目一覧

使用上の注意と制約

PG-REX運用補助ツール利用時の制約を以下に示します。

  1. pg-rex_switchoverによるノード切り替えでは、Primaryの停止後からPrimaryの切り替え(新Primaryの起動)が完了するまでの間は一時的にサービスが停止した状態となる。
  2. pg-rex_switchoverによるノード切り替えの実施中に、pg-rex_switchoverが異常終了した場合のHAクラスタ状態は不確定であり、サービスが停止している可能性がある。この場合、元の状態への復旧は自動で実施されないため、HAクラスタ状態を確認し、手動復旧を試みること。
  3. 起動確認はPostgreSQLやIPaddr2、Ping、STONITHなどの固有のリソースにしか確認を行わないため、Apacheなど新しくリソースを追加したとしてもその確認を行わない。
  4. 両ノードの状態確認にネットワークの通信を用いるので、ツールが使用するLAN(デフォルトはD-LAN)切断時は、それ以外のLANが繋がっていても実行に失敗する。
  5. PG-REXでインストールしたファイルのディレクトリ構成が2つのノードで同一であること。
  6. アーカイブログを圧縮する場合、圧縮方式に対応した拡張子を付与しなければならない。サポートする圧縮方式はgzip (拡張子.gz)のみである。

よくあるQ&A

PG-REX運用補助ツール利用時における、よくある質問について以下に示します。

PG-REX運用補助ツール 13からの変更点


Copyright (c) 2012-2023, NIPPON TELEGRAPH AND TELEPHONE CORPORATION