[pgpool-general-jp: 1653] Re: レプリケーションで同期コミットする時の動作について

Bo Peng pengbo @ sraoss.co.jp
2020年 11月 6日 (金) 12:04:54 JST


彭です。

On Fri, 06 Nov 2020 08:49:24 +0900
Asai <office_a1971 @ yahoo.co.jp> wrote:

> はじめまして、浅井と申します。
> 
> PGPOOLの設定について教えて下さい。
> 
> 現在、2台のサーバーを使用して、PostgreSQLでレプリケーションし、
> PGPOOLでサーバーダウン時のフェイルオーバーする事を確認しています。
> 負荷分散とコネクションプールは未使用で、非同期コミットとしています。
> 今のところマスタダウン時もスレーブ側が昇格して更新参照できています。
> 
> ※サーバーダウン時はシステム停止して完全手動で復旧します。
> 
> ■各バージョン
> 
>  redhat6.5
>  PostgreSQL9.3
>  PGPOOL 3.3.5
> 
>  更新参照の操作は別パソコンのpgAdminを使用

PGPOOL 3.3.5 はすでに EOL になっているので、
新しいバージョンにバージョンアップすることをお勧めします。

https://pgpool.net/mediawiki/index.php/Downloads

> ■質問内容
> 
>  同期コミットなのでスレーブ側がダウンした時、待ち状態のようになりました。
>  スレーブダウン時にマスタ側に対して何か設定があるのでしょうか?
> 
>  Recovery.confはスレーブ側だけ配置しています。
> 

本事象につきましては、スレーブ側がダウンした時、
Pgpool-II のフェイルオーバスクリプトで、
PostgreSQL のパラメータを書換えるという対策があります。

以下の設定例をご参考ください。

------
PGHOME=/usr/pgsql-9.3
FAILED_NODE_ID=切り離されたノード番号
OLD_PRIMARY_NODE_ID=古いプライマリノード番号
NEW_MASTER_NODE_HOST=新しいマスターのホスト名
NEW_MASTER_NODE_PGDATA=新しいマスターのデータベースクラスタパス

if [ $FAILED_NODE_ID -ne $OLD_PRIMARY_NODE_ID ]; then

    # synchronous_standby_names = '' に設定変更
    ssh -T -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null postgres@$NEW_MASTER_NODE_HOST "
    sed -i \"s/#*synchronous_standby_names = '\*'/synchronous_standby_names = ''/\" ${NEW_MASTER_NODE_PGDATA}/postgresql.conf

    ${PGHOME}/bin/pg_ctl -D ${NEW_MASTER_NODE_PGDATA} reload
    "
fi
------

フェイルオーバスクリプトの設定および利用可能なパラメータについては
以下のドキュメントをご参考ください。

https://www.pgpool.net/docs/pgpool-II-3.3.5/doc/pgpool-ja.html#FAILOVER_COMMAND

> 
> お手数をおかけして申し訳ありません。
> 
> 宜しくお願い致します。
> _______________________________________________
> 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 メーリングリストの案内