[pgpool-general-jp: 1542] Re: DBフェイルオーバ後の「show pool_nodes」コマンドの role列について
Bo Peng
pengbo @ sraoss.co.jp
2018年 5月 31日 (木) 00:31:24 JST
彭です。
確認しますので、以下の情報を提供していただけないでしょうか。
- 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
--
Bo Peng <pengbo @ sraoss.co.jp>
SRA OSS, Inc. Japan
pgpool-general-jp メーリングリストの案内