PostgresqlとPgpool IIのセットアップが初めてです。私はPgpoolとRepmgrを使ってPostgresql HA/Loadのバランスを設定しました。失敗したpostgresqlマスターノードの自動回復がpgpool IIで機能していません
The setup consist of 3 nodes and verison of Application and OS is as mentioned below:
**Pgpool node** => 192.168.0.4, **Postgresql Nodes** => 192.168.0.6, 192.168.0.7
**OS version** => CentOS 6.8 (On all the 3 nodes)
**Pgpool II version** => pgpool-II version 3.5.0 (ekieboshi).
**Postgresql Version** => PostgreSQL 9.4.8
**Repmgr Version** => repmgr 3.1.3 (PostgreSQL 9.4.8)
私はlinkの設定に従っています。
マスターノードを停止すると、フェールオーバーは正常に実行され、スレーブノードが新しいマスターノードとして機能します。
フェイルオーバー後、障害ノードを手動で回復し、新しいマスターノードと同期させる必要があります。
私は回復プロセスを自動化したいと思います。 pgpoolのノード上の
pgpool.confのファイルは、パラメータがをrecovery_1st_stage_command含まれています。 私はソースをオンラインで検索しました。パラメータプール"recovery_1st_stage_command"は、Pgpoolノードの構成ファイルpgpool.confに設定する必要があります。
パラメータrecovery_1st_stage_command = 'basebackup.sh'を設定しました。 私は、スクリプト「basebackup.sh」上のファイルの両方PostgreSQLのノードデータディレクトリの下に「/var/lib/pgsql/9.4/data」を配置しています。
また、のスクリプトの 'pgpool_remote_start'は、データベースノードとディレクトリ '/var/lib/pgsql/9.4/data'の両方に配置されています。
また、両方のデータベースノードにpgpool拡張pgpool_recoveryとpgpool_admが作成されました。
マスターノードが停止すると、フェールオーバーは発生しますが、リカバリスクリプト 'basebackup.sh'は実行されません。
私はpgpoolログをチェックし、デバッグレベルも有効にしました。スクリプトが実行されたかどうかはまだ分かりません。
故障したノードの自動オンライン復旧を手伝ってください。私が使ったスクリプトを見つけてください。
basebackup.sh
#!/bin/bash
# first stage recovery
# $1 datadir
# $2 desthost
# $3 destdir
#as I'm using repmgr it's not necessary for me to know datadir(master) $1
RECOVERY_NODE=$2
CLUSTER_PATH=$3
#repmgr needs to know the master's ip
MASTERNODE=`/sbin/ifconfig eth0 | grep inet | awk '{print $2}' | sed 's/addr://'`
cmd1=`ssh [email protected]$RECOVERY_NODE "repmgr -D $CLUSTER_PATH --force standby clone $MASTERNODE"`
echo $cmd1
pgpool_remote_startスクリプト。
#! /bin/sh
if [ $# -ne 2 ]
then
echo "pgpool_remote_start remote_host remote_datadir"
exit 1
fi
DEST=$1
DESTDIR=$2
PGCTL=/usr/pgsql-9.4/bin/pg_ctl
ssh -T $DEST $PGCTL -w -D $DESTDIR start 2>/dev/null 1>/dev/null < /dev/null &
感謝。
フェールオーバー後、スタンバイノードが新しいマスターサーバーとして正常に昇格されています。そして今、** Pgpool **ノードで** pcp_recovery_node **コマンドを手動で実行する必要があります。このコマンドは、新しいMasterサーバー上で** basebackup.sh **スクリプトを実行し、失敗したノードを正常に回復し、ノードをクラスタに参加させます。 **このpcp_recovery_nodeコマンドexecuiton **を自動化したいです。 – yravi104