恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
大数据应用方案1-Postgresql
首页
资讯中心
/
大数据应用方案1-Postgresql
大数据应用方案1-Postgresql
发布时间:2026/10/8 1:20:57
目录1 说明2. 基于docker的集群实践2.1 方案设计2.2 docker-compose.yml2.2.1 要点2.2.2 pg-02.2.3 pg-12.2.4 pgpool2.3 测试2.3.1 节点断掉后重连数据自动同步3. 单机开发环境安装4. 宝塔下的postgres注意要点4.1 客户端认证4.2 扩展安装参考 :附录工具安装扩展相关命令repmgr管理pq 控制台1 说明在做任何系统之前选择哪种数据底座做支持很重要是一栋大厦地基牢不牢固的根本问题这里用Postgresql基于docker实现了分布式的集群实践分享之。2. 基于docker的集群实践2.1 方案设计- 两个已安装了docker的Ubuntu22.04虚拟机其中pg-0为主节点, pg-1为从节点pgpool为负载均衡节点。- 使用最新镜像: bitnami/postgresql-repmgr:latest 当前版本是16.4HostsIP:Port备注pg-0192.168.0.130:5432主节点pg-1192.168.0.131:5432从节点pgpool192.168.0.130:9999负载平i衡器连接池构建成功后如图:2.2 docker-compose.yml2.2.1 要点- 因为Server装的是单独的docker环境 并非Docker Swarm, 又由于是容器分离的环境所以Docker的Network Mode需使用host类型 之前试过映射端口的连接怎样都加不到集群- 将/tmp映射出来当不正常开关机时会有错误[ERROR] PID file /tmp/repmgrd.pid exists and seems to contain a valid PID可通过删除 该目录下pid文件解决2.2.2 pg-0services: pg-0: image: bitnami/postgresql-repmgr:latest container_name: pg-0 network_mode: host ports: - 5432 volumes: - /data0/Server/Db/pq-repmgr:/bitnami/postgresql - /data0/Server/Temp/pq-repmgr:/tmp environment: - POSTGRESQL_POSTGRES_PASSWORD星星 - POSTGRESQL_USERNAMEpostgres - POSTGRESQL_PASSWORD星星 - POSTGRESQL_DATABASEpostgres - POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS1 - REPMGR_PASSWORD星星 - REPMGR_PRIMARY_HOSTpg-0 - REPMGR_PRIMARY_PORT5432 - REPMGR_PARTNER_NODESpg-0:5432,pg-1:5432 - REPMGR_NODE_NAMEpg-0 - REPMGR_NODE_NETWORK_NAMEpg-0 - REPMGR_PORT_NUMBER5432 restart: always extra_hosts: - pg-0:192.168.0.130 - pg-1:192.168.0.1312.2.3 pg-1services: pg-1: image: bitnami/postgresql-repmgr:latest container_name: pg-1 network_mode: host ports: - 5432 volumes: - /data0/Server/Db/pq-repmgr:/bitnami/postgresql - /data0/Server/Temp/pq-repmgr:/tmp environment: - POSTGRESQL_POSTGRES_PASSWORD星星 - POSTGRESQL_USERNAMEpostgres - POSTGRESQL_PASSWORD星星 - POSTGRESQL_DATABASEpostgres - POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS1 - REPMGR_PASSWORD星星 - REPMGR_PRIMARY_HOSTpg-0 - REPMGR_PRIMARY_PORT5432 - REPMGR_PARTNER_NODESpg-0:5432,pg-1:5432 - REPMGR_NODE_NAMEpg-1 - REPMGR_NODE_NETWORK_NAMEpg-1 - REPMGR_PORT_NUMBER5432 restart: always extra_hosts: - pg-0:192.168.0.130 - pg-1:192.168.0.1312.2.4 pgpool加入配置 REPMGR_PRIMARY_HOSTpg-0 即主服务则读写都可以了否则是只读模式, 当通过连接pgpool删减或增加表时自动同步到pg-0与pg-1services: pgpool: image: bitnami/pgpool:latest container_name: pgpool ports: - 9999:5432 environment: - PGPOOL_BACKEND_NODES0:pg-0:5432,1:pg-1:5432 - PGPOOL_SR_CHECK_USERrepmgr - PGPOOL_SR_CHECK_PASSWORD星星 - PGPOOL_ENABLE_LDAPno - PGPOOL_POSTGRES_USERNAMEpostgres - PGPOOL_POSTGRES_PASSWORD星星 - PGPOOL_ADMIN_USERNAMEadmin - PGPOOL_ADMIN_PASSWORD星星 - PGPOOL_ENABLE_LOAD_BALANCINGyes - PGPOOL_POSTGRES_CUSTOM_USERScustomuser - PGPOOL_POSTGRES_CUSTOM_PASSWORDS星星 - REPMGR_PRIMARY_HOSTpg-0 restart: always extra_hosts: - pg-0:192.168.0.130 - pg-1:192.168.0.131 healthcheck: test: [CMD, /opt/bitnami/scripts/pgpool/healthcheck.sh] interval: 10s timeout: 5s retries: 52.3 测试2.3.1 节点断掉后重连数据自动同步- 停掉pg-1节点 然后连接pgpool新增一个t1表插入一条数据 重启pg-1节点观察相应数据库是否有新增t1表及数据完整性测试通过。3. 单机开发环境安装系统 ubuntu22.04# 安装 postgresql16 apt-get update apt-get install postgresql-16 # 完后开用户修改postgres超管密码 su postgres psql CREATE USER fsft_t1 PASSWORD xxx; ALTER USER postgres WITH PASSWORD xxx; # 允许外部ip访问 vi /etc/postgresql/16/main/pg_hba.conf 添加下面 host all all 0.0.0.0/0 scram-sha-2564. 宝塔下的postgres注意要点4.1 客户端认证需要在PostgreSQL管理器填上与数据库对应的用户及允许的IP来源无限制ip填 0.0.0.0 否则连接失败4.2 扩展安装宝塔下带有快速的pq数据库安装可按以下步骤安装扩展获取并安装扩展apt update apt install git make gcc cd /tmp git clone https://github.com/pgvector/pgvector.git cd pgvector # 指定宝塔的pg_config export PG_CONFIG/www/server/pgsql/bin/pg_config make make install bt restart pgsql验证扩展是否识别# 进入宝塔的psql /www/server/pgsql/bin/psql -U postgres # 查询可用扩展 SELECT name FROM pg_available_extensions WHERE namevector; # 能查到vector说明识别成功然后在目标库启用 CREATE EXTENSION IF NOT EXISTS vector;参考 :- pgpool 参数 containers/bitnami/pgpool at main · bitnami/containers · GitHub- PostgreSQL添加UUID扩展附录工具pgAdmin - pgAdmin - PostgreSQL Tools安装扩展# 用apt安装pq扩展, 装完后无需重启pq服务 apt search postgresql-16 apt install postgresql-16-pgvector # 查看当前数据库已启用的扩展 SELECT * FROM pg_extension; # 查看当前pq可用的扩展 SELECT * FROM pg_available_extensions; # 为当前数据库启用扩展 CREATE EXTENSION IF NOT EXISTS uuid-ossp; CREATE EXTENSION IF NOT EXISTS vector;相关命令repmgr管理# 查看连接的节点 /opt/bitnami/scripts/postgresql-repmgr/entrypoint.sh repmgr -f /opt/bitnami/repmgr/conf/repmgr.conf cluster showpq 控制台# 查看版本 select version(); # 查看插件 select * from pg_extension; SELECT * FROM pg_available_extensions; # 为数据库安装插件 CREATE EXTENSION vector;