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

目次

運用補助ツールとは?

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

機能概要

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

  1. pg-rex_master_start

    PG-REXをMasterとして起動する。

  2. pg-rex_slave_start

    PG-REXをSlaveとして起動する。

  3. pg-rex_stop

    PG-REXのMasterまたはSlaveを停止する。

  4. pg-rex_archivefile_delete

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

  5. pg-rex_switchover

    PG-REXの系切り替えを実施する。

導入方法

インストール

動作確認済み環境

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

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

  1. pg-rex_operation_tools_script-10.0-1.el7.noarch.rpm
  2. IO_Tty-1.11-1.el7.x86_64.rpm
  3. Net_OpenSSH-0.62-1.el7.x86_64.rpm

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

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

# rpm -ivh Net_OpenSSH-0.62-1.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:Net_OpenSSH-0.62-1.el7           ################################# [100%]
# rpm -ivh IO_Tty-1.11-1.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:IO_Tty-1.11-1.el7                ################################# [100%]
# rpm -ivh pg-rex_operation_tools_script-10.0-1.el7.noarch.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:pg-rex_operation_tools_script-10################################# [100%]

PG-REX運用補助ツールのRPMパッケージをインストールすると、以下のようなディレクトリ構成になります。

/usr
   └-local
      └-bin
         └-pg-rex_master_start
         └-pg-rex_slave_start
         └-pg-rex_stop
         └-pg-rex_archivefile_delete
         └-pg-rex_switchover

/etc
   └- pg-rex_tools.conf

PG-REX運用補助ツールのRPMパッケージが正常にインストールされていることを確認します。

# rpm -qa | grep IO_Tty
IO_Tty-1.11-1.el7.x86_64
# rpm -qa | grep Net_OpenSSH
Net_OpenSSH-0.62-1.el7.x86_64
# rpm -qa | grep pg-rex
pg-rex_operation_tools_script-10.0-1.el7.noarch

設定ファイルの編集

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

$ cat /etc/pg-rex_tools.conf
D-LAN_IPAddress = 192.168.2.1 , 192.168.2.2
Archive_dir = /dbfp/pgarch/arc1
STONITH = enable
VIP_SLAVE = enable
PGPATH = /usr/pgsql-10/bin
PEER_NODE_SSH_PASS_MODE = manual
PEER_NODE_SSH_PASS_FILE = /root/.ssh/peer_node_passfile
BACKUP_NODE_SSH_PASS_MODE = manual
BACKUP_NODE_SSH_PASS_FILE = /root/.ssh/backup_node_passfile
PG-REX_Master_ResourceID = msPostgresql
PG-REX_Primitive_ResourceID = pgsql
VIP-MASTER_ResourceID = vip-master
VIP-REP_ResourceID = vip-rep
VIP-SLAVE_ResourceID = vip-slave
PING_ResourceID = clnPing
DISKD_ResourceID = clnDiskd1
STONITH_ResourceID = grpStonith1 , grpStonith2
ARCHIVE_DELETE_DBCLUSTER_DIR = /dbfp/pgdata/data # この設定値はツールが自動で追加したものです。設定行が複数行出る場合がありますが動作に影響はありません。

ネットワーク接続の登録

PG-REX運用補助ツールでは両系の状態確認にネットワークの通信を用いるため、事前に両系のrootユーザの.ssh/known_hostに相手先の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)? 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パッケージのアンインストールを行います。

# rpm -e pg-rex_operation_tools_script-10.0-1.el7.noarch
# rpm -e Net_OpenSSH-0.62-1.el7.x86_64
# rpm -e IO_Tty-1.11-1.el7.x86_64

# rpm -qa | grep IO_Tty
(出力なし)
# rpm -qa | grep Net_OpenSSH
(出力なし)
# rpm -qa | grep pg-rex
(出力なし)

コマンドリファレンス

  1. pg-rex_master_start
  2. pg-rex_slave_start
  3. pg-rex_stop
  4. pg-rex_archivefile_delete
  5. pg-rex_switchover

pg-rex_master_start

概要

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

形式
pg-rex_master_start [-h][-v][CrmFilePath]
引数
実行例
# pg-rex_master_start
root@192.168.2.2's password:
パスワードが入力されました
1. Pacemaker および Corosync が停止していることを確認
…[OK]
2. 稼働中の Master が存在していないことを確認
…[OK]
3. Master として稼働することが出来るかを確認
…[OK]
4. 起動禁止フラグの存在を確認
…[OK]
5. Pacemaker 起動
…[OK]
6. Master の起動確認
…[OK]
ノード(pgrex01)が Master として起動しました
# pg-rex_master_start PG-REX9.6_pm_crmgen_env.crm
root@192.168.2.2's password:
パスワードが入力されました
1. Pacemaker および Corosync が停止していることを確認
…[OK]
2. 稼働中の Master が存在していないことを確認
…[OK]
3. 起動禁止フラグの存在を確認
…[OK]
/var/lib/pacemaker/cib 配下に既に cib ファイルがあります
削除して反映しても宜しいでしょうか? (y/N) y
4. /var/lib/pacemaker/cib 配下の cib ファイルを削除
…[OK]
5. Pacemaker 起動
…[OK]
6. crm ファイルの反映
…[OK]
7. Master の起動確認
…[OK]
ノード(pgrex01)が Master として起動しました

pg-rex_slave_start

概要

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

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

以下の方法で起動が可能です
b) ベースバックアップを取得してSlaveを起動
q) Slaveの起動を中止する
起動方法を選択してください(b/q) b
5. IC-LAN が接続されていることを確認
…[OK]
6. Master からベースバックアップ取得
22631/22631 kB (100%), 1/1 tablespace
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
...[OK]
7. Master のアーカイブディレクトリと同期
receiving incremental file list
./
000000010000000000000002.partial
00000002.history
000000020000000000000003.00000028.backup

sent 125 bytes  received 16779892 bytes  11186678.00 bytes/sec
total size is 16777559  speedup is 1.00
receiving incremental file list
000000010000000000000001
000000020000000000000002
000000020000000000000003

sent 68 bytes  received 50338126 bytes  33558796.00 bytes/sec
total size is 67109207  speedup is 1.33
...[OK]
8. /var/lib/pacemaker/cib 配下のファイルを削除
...[OK]
9. Slave の起動 (アーカイブリカバリ対象 WAL セグメント数: 1)
...[OK]
10. Slave の起動確認
...[OK]
ノード(pgrex02)が Slave として起動しました

pg-rex_stop

概要

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

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

pg-rex_archivefile_delete

概要

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

コマンド実行時にベースバックアップの場所の指定を省略した場合は、対話形式での指定となります。対話形式でも省略した場合は、MasterとSlaveのみを対象にして不要なアーカイブログを削除します。ベースバックアップの場所がリモートサーバの場合は、環境設定ファイルの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

概要

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

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

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

[ 現在 / 系切り替え後のクラスタ状態 ]
 Master : pgrex01 -> pgrex02
 Slave  : pgrex02 -> pgrex01

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

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

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

8. pgrex01 の Pacemaker を停止
…[OK]
9. pgrex01 で Slave を起動
receiving incremental file list
./
00000011000000000000000C
00000012000000000000000E
00000013.history

sent 71 bytes  received 33561066 bytes  7458030.44 bytes/sec
total size is 503327160  speedup is 15.00

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

****************************************
**** 系切り替えが正常に完了しました ****
****************************************

[ 現在のクラスタ状態 ]
 Master : pgrex02
 Slave  : pgrex01

設定ファイル

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

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

設定項目一覧

使用上の注意と制約

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

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

よくあるQ&A

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

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


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