如何在使用docker的postgresql上进行故障转移后提升master

Pau*_*lMB 5 database postgresql high-availability docker docker-compose

首先我正在使用这个设置 postgres-docker-cluster,在故障转移期间一切正常,我停止主人和奴隶取代它的位置,但是如果我重新开启主人我不知道如何提升到再次掌握,我会赞赏正确方向的任何指针,我需要手动推广吗?对不起,我对这个概念很新(ha).这个docker使用repmgr,pgpool2postgre 9.5.

码头上的一些信息

Pau*_*lMB 2

所以我想出如何解决这个问题,

  1. 手动创建容器

    掌握 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

    PG池
    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 添加更多从站

  1. 停止 master pgmaster,slave pgslave1将在几秒后升级,
  2. 添加新的从属容器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 \你可以使用旧主服务器中的主服务器,或者使用已添加到 pgpool 上的主服务器,BACKENDS='0:pgmaster:5432:1:/var/lib/postgresql/data:ALLOW_TO_FAILOVER,1:pgslave1::::' \否则如果新主服务器出现故障,repmgr 将无法恢复它。

这是一个小手册,但它满足了我的需要,那就是向新的主站添加一个新的从站。