使用docker部署pg集群(postgresql+postgis+pgrouting+pgpool)
使用docker部署pg集群(postgresql+postgis+pgrouting+pgpool)
1,安装docker
yum install docker
2,拉取docker容器
docker pull hub-mirror.c.163.com/bitnami/postgresql-repmgr:15
docker pull hub-mirror.c.163.com/bitnami/pgpool:latest
3,启动数据库
1,创建文件夹并赋予权限
cd /
mkdir data
cd data
mkdir repmgr1
mkdir repmgr2
chmod 777 /data/repmgr1
chmod 777 /data/repmgr2
2,创建docker网络
docker network create pg-network
3,启动数据库
docker run -v /data/repmgr1:/bitnami/postgresql --detach --restart always --name pg-0 -p 30350:5432 --network pg-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=123456 --env POSTGRESQL_PASSWORD=123456 hub-mirror.c.163.com/bitnami/postgresql-repmgr:15
docker run -v /data/repmgr2:/bitnami/postgresql --detach --restart always --name pg-1 -p 30351:5432 --network pg-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=123456 --env POSTGRESQL_PASSWORD=123456 hub-mirror.c.163.com/bitnami/postgresql-repmgr:15
4,查看运行状态
docker ps -a
4,启动pgpool
docker run --detach --restart always --name pgpool -p 9999:5432 \
--env PGPOOL_BACKEND_NODES=0:pg-0:30350,1:pg-1:30351 \
--env PGPOOL_SR_CHECK_USER=postgres \
--env PGPOOL_SR_CHECK_PASSWORD=123456 \
--env PGPOOL_ENABLE_LDAP=no \
--env PGPOOL_POSTGRES_USERNAME=postgres \
--env PGPOOL_POSTGRES_PASSWORD=123456 \
--env PGPOOL_ADMIN_USERNAME=postgres \
--env PGPOOL_ADMIN_PASSWORD=123456 \
--add-host=pg-0:10.10.10.130 \
--add-host=pg-1:10.10.10.130 \
hub-mirror.c.163.com/bitnami/pgpool:latest
5,添加pgrouting
1,进入docker容器内
docker exec -u 0 -it pg-0 /bin/bash
docker exec -u 0 -it pg-1 /bin/bash
2,复制pgrouting文件到指定路径
1,上传文件到 /data/repmgr1 和 /data/repmgr1
下载地址 https://wwpm.lanzouj.com/iyjJ311crw5e
2,容器内执行命令
cp -r /bitnami/postgresql/pgrouting/lib/. /opt/bitnami/postgresql/lib
cp -r /bitnami/postgresql/pgrouting/share/extension/. /opt/bitnami/postgresql/share/extension/
6,pgpool添加用户
1,进入docker容器内
docker exec -u 0 -it pgpool /bin/bash
2,执行命令
pg_enc --key-file=/opt/bitnami/pgpool/conf/.pgpoolkey -m -f /opt/bitnami/pgpool/conf/pgpool.conf -u username password
username 是用户名
password 是密码 如果密码带有特殊符号需要转义 如 Yhsncy%#$# 转义为 Yhsncy\%\#\$\#