docker run --detach --rm -p 5432:5432 --name pg-0 \ --network my-network \ --env REPMGR_PARTNER_NODES=pg-0,pg-1 \ --env REPMGR_NODE_NAME=pg-0 \ --env REPMGR_NODE_NETWORK_NAME=pg-0 \ --env REPMGR_PRIMARY_HOST=pg-0 \ --env REPMGR_PASSWORD=rep
docker run --detach --rm -p 5432:5432 --name pg-0 \
--network my-network \
--env REPMGR_PARTNER_NODES=pg-0,pg-1 \
--env REPMGR_NODE_NAME=pg-0 \
--env REPMGR_NODE_NETWORK_NAME=pg-0 \
--env REPMGR_PRIMARY_HOST=pg-0 \
--env REPMGR_PASSWORD=repmgrpass \
--env POSTGRESQL_POSTGRES_PASSWORD=adminpassword \
--env POSTGRESQL_USERNAME=customuser \
--env POSTGRESQL_PASSWORD=custompassword \
--env POSTGRESQL_DATABASE=customdatabase \
bitnami/postgresql-repmgr:latest
docker run --detach --rm -p 5432:5432 --name pg-1 \
--network my-network \
--env REPMGR_PARTNER_NODES=pg-0,pg-1 \
--env REPMGR_NODE_NAME=pg-1 \
--env REPMGR_NODE_NETWORK_NAME=pg-1 \
--env REPMGR_PRIMARY_HOST=pg-0 \
--env REPMGR_PASSWORD=repmgrpass \
--env POSTGRESQL_POSTGRES_PASSWORD=adminpassword \
--env POSTGRESQL_USERNAME=customuser \
--env POSTGRESQL_PASSWORD=custompassword \
--env POSTGRESQL_DATABASE=customdatabase \
bitnami/postgresql-repmgr:latest
docker run --detach --rm --name pgpool -v -p 9999:5432 \
--network my-network \
--env PGPOOL_BACKEND_NODES=0:pg-0:5432,1:pg-1:5432 \
--env PGPOOL_SR_CHECK_USER=customuser \
--env PGPOOL_SR_CHECK_PASSWORD=custompassword \
--env PGPOOL_ENABLE_LDAP=no \
--env PGPOOL_POSTGRES_USERNAME=postgres \
--env PGPOOL_POSTGRES_PASSWORD=adminpassword \
--env PGPOOL_ADMIN_USERNAME=admin \
--env PGPOOL_ADMIN_PASSWORD=adminpassword \
bitnami/pgpool:latest
以上方法非常简单,最后程序直接访问9999端口即可实现读写分离。
缺点:
1.只能再一个宿主机上执行,不能跨主机。
2.不能挂载数据库路径,数据安全无法保证。