2

repmgr 4.1.0-1 を使用して CentOS 7 で実行されている 2 つの postgres サーバーがあります。これまでのところ、プライマリ サーバーに障害が発生した後にスタンバイをプライマリに昇格させるプロセスを自動化しましたが、復旧すると両方がプライマリとして機能し、repmgr.conf の follow_command は実行されないと思います。データ フォルダーを削除して新しいプライマリ サーバーからクローンを作成し、それをスタンバイとして登録することで、手動で行うことができます。

サーバー 1 の repmgr.conf

node_id=1
node_name=pgdb1
conninfo='host=192.168.0.105 user=repmgr dbname=repmgr'
pg_bindir=/usr/pgsql-9.6/bin/
master_response_timeout=5
reconnect_attempts=2
reconnect_interval=2
failover=automatic
promote_command='/usr/pgsql-9.6/bin/repmgr standby promote -f /var/lib/pgsql/9.6/repmgr/repmgr.conf --log-to-file'
follow_command='/usr/pgsql-9.6/bin/repmgr standby follow -f /var/lib/pgsql/9.6/repmgr/repmgr.conf --log-to-file --upstream-node-id=2'
data_directory='/var/lib/pgsql/9.6/data'
log_file='/var/log/repmgr/repmgr.log'
log_level=DEBUG
service_start_command   = 'sudo systemctl start postgresql-9.6'
service_stop_command    = 'sudo systemctl stop postgresql-9.6'
service_restart_command = 'sudo systemctl restart postgresql-9.6'
service_reload_command  = 'sudo systemctl reload postgresql-9.6'

サーバー 2 の repmgr.conf

node_id=2
node_name=pgdb2
conninfo='host=192.168.0.106 user=repmgr dbname=repmgr'
pg_bindir=/usr/pgsql-9.6/bin/
master_response_timeout=5
reconnect_attempts=2
reconnect_interval=2
failover=automatic
promote_command='/usr/pgsql-9.6/bin/repmgr standby promote -f /var/lib/pgsql/9.6/repmgr/repmgr.conf --log-to-file'
follow_command='/usr/pgsql-9.6/bin/repmgr standby follow -f /var/lib/pgsql/9.6/repmgr/repmgr.conf --log-to-file --upstream-node-id=1'
data_directory='/var/lib/pgsql/9.6/data'
log_file='/var/log/repmgr/repmgr.log'
log_level=DEBUG
service_start_command   = 'sudo systemctl start postgresql-9.6'
service_stop_command    = 'sudo systemctl stop postgresql-9.6'
service_restart_command = 'sudo systemctl restart postgresql-9.6'
service_reload_command  = 'sudo systemctl reload postgresql-9.6'

サーバーが再起動すると、サーバー自体に接続され、監視が再開されます。ここにログがあります

[2018-08-16 21:29:56] [DEBUG] connecting to: "user=repmgr dbname=repmgr host=192.168.0.105 connect_timeout=2 fallback_application_name=repmgr"
[2018-08-16 21:29:56] [NOTICE] reconnected to primary node after 22 seconds, resuming monitoring
[2018-08-16 21:31:33] [INFO] monitoring primary node "pgdb1" (node ID: 1) in normal state

プライマリが再起動したときにスタンバイに切り替えるように自動化する方法、または昇格された元のスタンバイがスタンバイに戻るように自動化する方法はありますか? または、follow_command からそれを行うスクリプトにリダイレクトすることもできます。たとえば、次のようにします。

どんな助けにも感謝します。

4

0 に答える 0