クラウド環境で Postgresql クラスターを構築したい (はい、それが悪い考えであることはわかっていますが、それは問題ではありません)。参考までに、Docker化されたPostgresqlを使用しています(https://github.com/paunin/postgres-docker-clusterを参照)が、それは問題でも問題でもありません。
そのため、ストリーミング レプリケーションを使用して 2 つの Postgresql 9.5 をインストールしました。各ホストに repmgr 3.2.1 がインストールされ、正しく構成されています。
次のケースには問題があります。
- マスターを止め、
- スレーブのフェールオーバーを待ちます -> OK,
- 古いマスターを再起動します -> Ko で示されたクラスターに 2 つのマスターがあり
repmgr cluster show
、古いマスターを強制的にスレーブにする解決策が見つかりません。
私が見つけた唯一の醜い解決策は、古いマスターのすべてのデータを削除して再起動することです。これを行うと、予想どおりスレーブになりました(ただし、完全な再同期が必要です...)。
古いマスターを強制的にスレーブにすることはできないようですのでご注意ください。repmgr standby register
それが言うように動作しません:
[2016-12-06 15:04:04] [INFO] connecting to standby database
[2016-12-06 15:04:04] [ERROR] this node should be a standby (user=replication_user password=replication_pass host=psg-host21 dbname=replication_db port=5432 connect_timeout=2)
[2016-12-06 15:04:04] [INFO] connecting to database
Role | Name | Upstream | Connection String
----------+------------|------------|------------------------------------------------------------------------------------------------------------------
* master | psg-host21 | | user=replication_user password=replication_pass host=psg-host21 dbname=replication_db port=5432 connect_timeout=2
* master | psg-host22 | psg-host21 | user=replication_user password=replication_pass host=psg-host22 dbname=replication_db port=5432 connect_timeout=2
どんな助けでも大歓迎です。