首先我正在使用这个设置 postgres-docker-cluster ,在故障转移期间一切正常,我停止了主机,而 slave1 取代了它,但是如果我重新打开主机,我不确定如何再次提升为主机,我将不胜感激任何正确方向的指示,做我需要手动推广吗?抱歉,我对这个概念很陌生(ha)。 此 docker 使用 repmgr、pgpool2 和 postgres 9.5。
关于 docker 的一些信息
最佳答案
所以我想出了解决问题的方法,
手动创建容器
硕士
docker 运行\ -e INITIAL_NODE_TYPE='master'\ -e 节点 ID=1\ -e NODE_NAME='node1'\ -e CLUSTER_NODE_NETWORK_NAME='pgmaster'\ -e POSTGRES_PASSWORD='monkey_pass'\ -e POSTGRES_USER='monkey_user'\ -e POSTGRES_DB='monkey_db'\ -e CLUSTER_NODE_REGISTER_DELAY=5\ -e REPLICATION_DAEMON_START_DELAY=120\ -e CLUSTER_NAME='pg_cluster'\ -e REPLICATION_DB='replication_db'\ -e REPLICATION_USER='replication_user'\ -e REPLICATION_PASSWORD='replication_pass'\ -v 集群文件:/var/cluster_archive\ -p 5432:5432\ --我的网络\ --net-别名 pgmaster\ --名称 pgmastertest\ paunin/postgresql-cluster-pgsql
奴隶
docker 运行\ -e INITIAL_NODE_TYPE='备用'\ -e 节点 ID=2\ -e NODE_NAME='node2'\ -e REPLICATION_PRIMARY_HOST='pgmaster'\ -e CLUSTER_NODE_NETWORK_NAME='pgslave1'\ -e REPLICATION_UPSTREAM_NODE_ID=1\ -v 集群文件:/var/cluster_archive\ -p 5441:5432\ --我的网络\ --net-别名 pgslave1\ --名称 pgslavetest\ paunin/postgresql-cluster-pgsql
程序池
docker 运行\ -e PCP_USER='pcp_user'\ -e PCP_PASSWORD='pcp_pass'\ -e PGPOOL_START_DELAY=120\ -e REPLICATION_USER='replication_user'\ -e REPLICATION_PASSWORD='replication_pass'\ -e SEARCH_PRIMARY_NODE_TIMEOUT=5\ -e DB_USERS='monkey_user:monkey_pass'\ -e BACKENDS='0:pgmaster:5432:1:/var/lib/postgresql/data:ALLOW_TO_FAILOVER,1:pgslave1:::::'\ -p 5430:5432\ -p 9898:9898\ --我的网络\ --net-别名 pgpool\ --名称 pgpooltest\ paunin/postgresql-cluster-pgpool
在行 BACKENDS='0:pgmaster:5432:1:/var/lib/postgresql/data:ALLOW_TO_FAILOVER,1:pgslave1:::::'\
你可以添加更多的奴隶到pgpool
- 停止master pgmaster,slave pgslave1会在几秒后提升,
- 添加新的从属容器
docker run\ -e INITIAL_NODE_TYPE='备用'\ -e 节点 ID=3\ -e NODE_NAME='node1'\ -e REPLICATION_PRIMARY_HOST='pgslave1'\ -e CLUSTER_NODE_NETWORK_NAME='pgmaster'\ -e REPLICATION_UPSTREAM_NODE_ID=2\ -v 集群文件:/var/cluster_archive\ -p 5432:5432\ --我的网络\ --net-别名 pgmaster\ --名称 pgmastertest3\ paunin/postgresql-cluster-pgsql
在以下几行
-e REPLICATION_PRIMARY_HOST='pgslave1'\
确保您指向新主机 (pgslave1) 的别名。
-e REPLICATION_UPSTREAM_NODE_ID=2\
确保您指向新的主节点 ID (2)。
-e NODE_ID=3\
确保此 ID 不存在于表 repl_nodes 中。
--net-alias pgmaster\
你可以使用你以前的主人的那个,或者使用你已经添加到 pgpool BACKENDS='0:pgmaster:5432:1:/var/lib/postgresql/data:ALLOW_TO_FAILOVER,1:pgslave1::::'\
否则如果新主服务器失败,repmgr 将无法恢复它。
这是一个小手册,但它满足了我的需要,那就是将新的奴隶添加到新的主人。
关于postgresql - 如何在使用 docker 在 postgresql 上进行故障转移后升级 master,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37710868/