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

标签 postgresql docker docker-compose high-availability

首先我正在使用这个设置 postgres-docker-cluster ,在故障转移期间一切正常,我停止了主机,而 slave1 取代了它,但是如果我重新打开主机,我不确定如何再次提升为主机,我将不胜感激任何正确方向的指示,做我需要手动推广吗?抱歉,我对这个概念很陌生(ha)。 此 docker 使用 repmgrpgpool2postgres 9.5

关于 docker 的一些信息

最佳答案

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

  1. 手动创建容器

    硕士 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

  1. 停止master pgmaster,slave pgslave1会在几秒后提升,
  2. 添加新的从属容器 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/

相关文章:

docker拉查找index.docker.io : no such host

docker - 更改 docker 中的文件夹权限

运行 go get 时 Docker 构建失败

docker - CRON 作业找不到在 docker-compose 中设置的环境变量

postgresql - 在 PostgreSQL 中每行只执行一次延迟触发器

sql - 查找满足条件但不四舍五入的行的百分比

python - postgresql:致命:用户 "douglas"的密码验证失败

sql - 从多行计算持续时间并分组

docker - 在 Travis CI 上缓存单个文件

docker - 如何使用状态管理设置 dapr 和 docker compose