[pgpool-general-jp: 1543] Re: DBフェイルオーバ後の「show pool_nodes」コマンドの role列について

中村憲一 nakamura.kenichi @ po.ntt-tx.co.jp
2018年 6月 1日 (金) 17:43:13 JST


彭様

お世話になっております、中村です。

ご連絡を頂きありがとうございます。


以下について、添付いたします。

- Pgpool-II 設定ファイル:pgpool.conf
 ・pgpoolマスタのファイル pgpool.conf-master
 ・pgpoolスタンバイのファイル pgpool.conf-standby

- PostgreSQL 設定ファイル:postgresql.conf
 ・PostgreSQLマスタのファイル(スタンバイも同じファイルを使用)

- フェイルオーバスクリプト
 ・failover.sh

- オンラインリカバリスクリプト
 ・未設定のため、ファイルがありません


以上となります。

ご確認のほど、よろしくお願い致します。


On 2018/05/31 0:31, Bo Peng wrote:
> 彭です。
> 
> 確認しますので、以下の情報を提供していただけないでしょうか。
> 
> - Pgpool-II 設定ファイル:pgpool.conf
> - PostgreSQL 設定ファイル:postgresql.conf
> - フェイルオーバスクリプト
> - オンラインリカバリスクリプト
> 
> 以上、よろしくお願いします。
> 
> On Mon, 28 May 2018 14:44:30 +0900
> 中村憲一 <nakamura.kenichi @ po.ntt-tx.co.jp> wrote:
> 
>> お世話になっております、中村です。
>>
>> こちらのご確認のほうはいかがでしょうか?
>>
>>
>> 原因特定のための情報など、不足しているのであれば再取得しますので、
>> ご指摘いただければと思います。
>>
>>
>> ご対応のほど、よろしくお願い致します。
>>
>>
>> On 2018/05/11 11:13, 中村憲一 wrote:
>>> はじめまして、お世話になります、中村と申します。
>>>
>>>
>>> DBフェイルオーバを実施した際の、DBノード情報の各pgpoolノードへの
>>> 伝播タイミングについてご質問させてください。
>>>
>>>
>>> 【概要】
>>> DBフェイルオーバ後に pgpoolのスタンバイノードから「show pool_nodes」コマ
>>> ンドを
>>> 実行すると、フェイルオーバによる role列の変更が反映されていませんでした。
>>> また、role列の反映漏れに伴うエラーログが、pgpoolのスタンバイノード上で、
>>> 継続的に出力されています。
>>>
>>> なお、pgpoolのマスタノードでは role列の情報が変わっています。
>>> また、status 列の値は pgpoolの両ノードで up から down へと遷移しています。
>>>
>>> 【質問】
>>> 上記の事象は、
>>> ・pgpool-IIの再起動
>>> ・障害になったDBノードの復旧と pcp_attach_node の実行
>>> のいずれかを行うことで解消しますが、DBノードの情報の変更を、
>>> 自動的に pgpoolのスタンバイノードへ反映させる方法はないでしょうか?
>>>
>>>
>>> 以下、検証環境、DB構成および再現手順です。
>>>
>>> 【環境】
>>>  CentOS 7.2
>>>  PostgreSQL 10.2
>>>  pgpool-II 3.7.3(3.7.2でも同様)
>>>
>>> 【構成】
>>>  DBノード0(マスタ)
>>>  DBノード1(スタンバイ)
>>>   ※同期レプリケーション構成
>>>  pgpoolノード0(MASTER)
>>>  pgpoolノード1(STANDBY)
>>>   ※pgpoolは2台構成
>>>
>>> 【再現手順】
>>> 1. DBノード2台、pgpoolノード2台 ともに正常に稼動させる(pgpoolノード3台
>>> でも同様)
>>> 2. DBノード0(マスタ)を pg_ctl stop で停止させる
>>> 3. DBノード0(マスタ)の障害を pgpoolノード0(MASTER)が検知し、DBフェイ
>>> ルオーバを行う
>>> 4. DBフェイルオーバにより、DBノード1(スタンバイ)がマスタに昇格する
>>>
>>> この状態で pgpoolノード1(STANDBY)の psqlより「show pool_nodes」コマンドを
>>> 実行すると、実態と異なる、role列の値が出力されます。
>>>
>>> 5. DBノード0 をスタンバイとして復旧し、レプリケーション構成に再組み込み
>>> (pcp_attach_node)する
>>>
>>> この状態で pgpoolノード1(STANDBY)上で「show pool_nodes」コマンドを実行
>>> すると、
>>> role列の結果が正しい値になります。
>>>
>>>
>>>
>>> 「show pool_nodes」で表示される情報は以下のとおり変化します。
>>>
>>> (1) 正常動作時
>>> pgpoolノード0(MASTER)、pgpoolノード1(STANDBY)の status列、role列の値
>>> が同じである。(正しい状態)
>>>
>>> ▼pgpoolノード0(MASTER)
>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>    node_id |    hostname    | port | status | lb_weight |  role   |
>>> select_cnt | load_balance_node | replication_delay
>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>
>>>    0       | 192.168.56.246 | 5432 | up     | 0.500000  | primary | 2
>>>        | true              | 0
>>>    1       | 192.168.56.243 | 5432 | up     | 0.500000  | standby | 0
>>>        | false             | 0
>>> (2 行)
>>>
>>> ▼pgpoolノード1(STANDBY)
>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>    node_id |    hostname    | port | status | lb_weight |  role   |
>>> select_cnt | load_balance_node | replication_delay
>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>
>>>    0       | 192.168.56.246 | 5432 | up     | 0.500000  | primary | 0
>>>        | false             | 0
>>>    1       | 192.168.56.243 | 5432 | up     | 0.500000  | standby | 0
>>>        | true              | 0
>>> (2 行)
>>>
>>>
>>> (2) DBフェイルオーバ実施後
>>> DBノード0(マスタ)を停止し、フェイルオーバで DBノード1(スタンバイ)が
>>> マスタに昇格すると、
>>> pgpoolノード0(MASTER)と pgpoolノード1(STANDBY)の status列の値は同じ
>>> であるが、
>>> role列の値が異なる。(誤った状態との認識)
>>>
>>> ▼pgpoolノード0(MASTER)
>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>    node_id |    hostname    | port | status | lb_weight |  role   |
>>> select_cnt | load_balance_node | replication_delay
>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>
>>>    0       | 192.168.56.246 | 5432 | down   | 0.500000  | standby | 2
>>>        | false             | 0
>>>    1       | 192.168.56.243 | 5432 | up     | 0.500000  | primary | 0
>>>        | true              | 0
>>> (2 行)
>>>
>>> ▼pgpoolノード1(STANDBY)
>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>    node_id |    hostname    | port | status | lb_weight |  role   |
>>> select_cnt | load_balance_node | replication_delay
>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>
>>>    0       | 192.168.56.246 | 5432 | down   | 0.500000  | primary | 0
>>>        | false             | 0
>>>    1       | 192.168.56.243 | 5432 | up     | 0.500000  | standby | 0
>>>        | true              | 0
>>> (2 行)
>>>
>>> ※しばらく放置しても role列の値に変化なし。
>>>
>>>
>>> (3) DB復旧、再組み込み後
>>> 停止した DBノード0(マスタ)をスタンバイとして再組み込みし、
>>> pcp_attach_node すると
>>> pgpoolノード1(STANDBY)の role列の値が、pgpoolノード0(MASTER)の role
>>> 列の値と同じ値になった。(正しい状態)
>>>
>>> ▼pgpoolノード0(MASTER)
>>> -bash-4.2$ pcp_attach_node -n 0
>>> Password:
>>> pcp_attach_node -- Command Successful
>>>
>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>    node_id |    hostname    | port | status | lb_weight |  role   |
>>> select_cnt | load_balance_node | replication_delay
>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>
>>>    0       | 192.168.56.246 | 5432 | up     | 0.500000  | standby | 2
>>>        | false             | 0
>>>    1       | 192.168.56.243 | 5432 | up     | 0.500000  | primary | 0
>>>        | true              | 0
>>> (2 行)
>>>
>>> ▼pgpoolノード1(STANDBY)
>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>    node_id |    hostname    | port | status | lb_weight |  role   |
>>> select_cnt | load_balance_node | replication_delay
>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>
>>>    0       | 192.168.56.246 | 5432 | up     | 0.500000  | standby | 0
>>>        | false             | 0
>>>    1       | 192.168.56.243 | 5432 | up     | 0.500000  | primary | 0
>>>        | true              | 0
>>> (2 行)
>>>
>>>
>>> 以上です。
>>> ご確認のほど、よろしくお願い致します。
>>>
>>>
>>>
>>
>> -- 
>> /*------------------------------------------------
>> 中村 憲一
>> NTTテクノクロス株式会社 IV2BU
>> 横浜アイマークプレイス13階
>> TEL  : 045-212-7393
>> MAIL : nakamura.kenichi @ po.ntt-tx.co.jp
>> ------------------------------------------------*/
>>
>> _______________________________________________
>> pgpool-general-jp mailing list
>> pgpool-general-jp @ sraoss.jp
>> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
> 
> 

-- 
/*------------------------------------------------
中村 憲一
NTTテクノクロス株式会社 IV2BU
横浜アイマークプレイス13階
TEL  : 045-212-7393
MAIL : nakamura.kenichi @ po.ntt-tx.co.jp
------------------------------------------------*/
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: pgpool-file.zip
$B7?(B:         application/x-zip-compressed
$B%5%$%:(B:     22273 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        <http://www.sraoss.jp/pipermail/pgpool-general-jp/attachments/20180601/9ff6f7ec/attachment-0001.bin>


pgpool-general-jp メーリングリストの案内