使用docker部署pg集群(postgresql+postgis+pgrouting+pgpool)

发布时间 2023-07-05 16:13:12作者: 枫·影

使用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\%\#\$\#