首先,我使用此设置postgres-docker-cluster,在故障转移期间一切正常,我停止了主机,而slave1取代了它的位置,但是如果我重新打开主机,则不确定如何再次提升为主机,我希望在正确的方向上有任何指示,我需要手动进行推广吗?抱歉,我对这个概念还很陌生。
该docker使用 repmgr pgpool2 postgre 9.5

码头上的一些信息

  • postgresql-cluster-pgsql
  • postgresql-cluster-pgpool
  • docker-compose.yml
  • 最佳答案

    所以我想出了解决问题的方法,

  • 手动创建容器

    掌握docker run \ -e INITIAL_NODE_TYPE='master' \ -e NODE_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 cluster-archives:/var/cluster_archive \ -p 5432:5432 \ --net mynet \ --net-alias pgmaster \ --name pgmastertest \paunin/postgresql-cluster-pgsql
    奴隶
    docker run \ -e INITIAL_NODE_TYPE='standby' \ -e NODE_ID=2 \ -e NODE_NAME='node2' \ -e REPLICATION_PRIMARY_HOST='pgmaster' \ -e CLUSTER_NODE_NETWORK_NAME='pgslave1' \ -e REPLICATION_UPSTREAM_NODE_ID=1 \ -v cluster-archives:/var/cluster_archive \ -p 5441:5432 \ --net mynet \ --net-alias pgslave1 \ --name pgslavetest \paunin/postgresql-cluster-pgsql
    pool池docker run \ -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 mynet \ --net-alias pgpool \ --name pgpooltest \paunin/postgresql-cluster-pgpool

  • BACKENDS='0:pgmaster:5432:1:/var/lib/postgresql/data:ALLOW_TO_FAILOVER,1:pgslave1::::' \行上,您可以向pgppool添加更多的slave
  • 停止主 pgmaster ,从属 pgslave1 会在几秒钟后提升,
  • 添加新的从属容器docker run \ -e INITIAL_NODE_TYPE='standby' \ -e NODE_ID=3 \ -e NODE_NAME='node1' \ -e REPLICATION_PRIMARY_HOST='pgslave1' \ -e CLUSTER_NODE_NETWORK_NAME='pgmaster' \ -e REPLICATION_UPSTREAM_NODE_ID=2 \ -v cluster-archives:/var/cluster_archive \ -p 5432:5432 \ --net mynet \ --net-alias pgmaster \ --name 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 \您可以使用旧主机上的BACKENDS='0:pgmaster:5432:1:/var/lib/postgresql/data:ALLOW_TO_FAILOVER,1:pgslave1::::' \,也可以使用已在pgpool ojit_code上添加的主机,否则,如果新主机失败,则repmgr将无法恢复。

    它有点手册,但是它满足了我的需要,那就是向新的主服务器添加新的从属服务器。

    关于database - 在使用docker在postgresql上进行故障转移后,如何提升master,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37710868/

    10-10 09:13