简介面向 PostgreSQL 运维与架构人员的高可用方案文档聚焦流复制与 pgpool-II 的组合部署覆盖主备库搭建、WAL 日志实时同步、同步与异步复制取舍、只读请求分流、读写分离及故障切换等核心问题。压缩包仅含 1 个 docx 文件大小约 773KB内容按方案介绍、实践环境、客户环境准备、资源调整等章节展开便于按部署阶段快速查阅。文档涉及连接池、复制、负载均衡、连接数限制与 pg_rman 备份并梳理主库 wal_level、synchronous_commit 配置、备库初始化、pgpool-II 参数设置和启动测试思路。已有 471 人学习适合需要实施主从复制与高可用架构的中级数据库从业者作为配置参考和排错索引。1. 双节点高可用不是“装完主从就收工”这份方案到底解决什么这套 PostgreSQL 主从流复制加 pgpool-II 的高可用方案第一次翻目录会觉得像标准实施手册流复制、连接池、读写分离、failover、pg_rman 备份一条线全串起来。真正落地时难点不在装软件而在版本差异、切换脚本和备份恢复的闭环。它适合正在 RHEL/CentOS 上维护 PostgreSQL 10 或 12、想把单机库改成双节点高可用又不想引入过重中间件的团队也适合需要内网离线部署、手里只有 rpm 包和几台 Linux 机器的运维。方案的核心不是某个参数而是把“实时同步、只读分流、故障切换、离线恢复”四段拼成一条能反复演练的链路。流复制负责数据不丢pgpool 负责连接入口和故障检测pg_rman 负责误操作后的后悔药三者缺一段高可用就只是纸面高可用。2. 版本与环境先把路铺平RHEL/CentOS 下的依赖、用户和内核参数2.1 版本组合和组件分工先确认 PostgreSQL 与 pgpool 对得上方案里给了新旧两套环境旧环境是 CentOS 6.5、PostgreSQL 10.3、pgpool-II 3.6.14新环境是 CentOS 7.5、PostgreSQL 12.2、pgpool-II 4.1.1。这个版本跨度不是随便写的PostgreSQL 12 取消了recovery.confpgpool 4.x 又把集群模式参数改成了backend_clustering_mode拿旧配置直接套新版本备库和 pgpool 都会起不来。组件旧环境新环境落地注意点PostgreSQL10.312.212 开始用standby.signal不再读recovery.confpgpool-II3.6.144.1.14.x 用backend_clustering_mode3.x 用master_slave_modepg_rman与 PostgreSQL 大版本匹配与 PostgreSQL 大版本匹配不要跨大版本混用备份工具操作系统CentOS 6.5CentOS 7.5内网离线源、依赖包和 cache 要提前准备组件分工也要先分清PostgreSQL 流复制只做数据同步备库默认只读pgpool-II 站在数据库前面做连接池、读写分离、健康检查和 VIP 漂移pg_rman 做的是离线备份和按时间点恢复不是替代流复制。常见误区是把 pgpool 当成“自动故障转移数据库”实际上 pgpool 只负责发现后端挂了并执行failover_command真正的备库提升要在脚本里做。方案选流复制而不是文件归档传送是因为流复制在 master 一产生 WAL 就通过 TCP 传给 standby延迟比“写完一个 WAL 文件再拷贝”低得多选 pgpool 而不是应用层双写是因为连接池和只读分流对应用侵入小改一个连接端口就能接进来。2.2 操作系统层六件事防火墙、SELinux、hosts、时钟、sysctl、limits方案把操作系统准备放在安装 PostgreSQL 之前这个顺序是对的。很多“主备连不上”最后查出来不是数据库参数而是防火墙没放行、SELinux 拦了 pgpool 绑 VIP或者两台机器时间差太大导致日志和切换判断对不上。内网环境可以简化但简化不等于跳过。# CentOS 7 示例内网方案文档为了省事会直接关防火墙和 SELinux systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/^SELINUX.*/SELINUXpermissive/ /etc/selinux/config # 主机名和 hosts 必须能互相解析主机名不要带下划线 cat /etc/hosts EOF 192.168.56.11 pg-master 192.168.56.12 pg-standby 192.168.56.13 pgpool-vip EOF # 时钟同步主备时间差控制在秒级以内 systemctl enable chronyd systemctl start chronyd chronyc sources -v上面这段是方案里“关闭防火墙、关闭 selinux、网络配置、配置 hosts、主备节点时钟同步”的合并写法。生产环境不建议永久关闭防火墙更稳的做法是只放行 PostgreSQL 5432、pgpool 9999、pcp 9898、SSH 22 以及 watchdog 心跳端口SELinux 至少设成 permissive或者按 pgpool 的启动脚本和 VIP 绑定动作单独放行。/etc/hosts里三个名字要能互相ping通后面primary_conninfo、backend_hostname、failover_command都靠主机名或 IP 定位别让一台机器用 IP、另一台用主机名排错时会多花很多时间。sysctl 和 limits 是方案里容易被跳过的部分。PostgreSQL 需要足够的共享内存和信号量pgpool 绑定非本地 VIP 需要ip_nonlocal_bind连接数上来后nofile不够会直接报“too many open files”。# /etc/sysctl.d/99-pgpool.conf cat /etc/sysctl.d/99-pgpool.conf EOF kernel.shmmax 68719476736 kernel.shmall 4294967296 kernel.sem 250 32000 100 128 vm.swappiness 10 net.ipv4.ip_nonlocal_bind 1 EOF sysctl --system # /etc/security/limits.d/20-postgres.conf cat /etc/security/limits.d/20-postgres.conf EOF postgres soft nproc 2048 postgres hard nproc 2048 postgres soft nofile 65536 postgres hard nofile 65536 EOFkernel.shmmax和kernel.shmall按机器内存调整不要照抄成大值把系统撑爆kernel.sem是信号量数组PostgreSQL 并行查询和连接数高时会用到vm.swappiness10是让数据库尽量不换页net.ipv4.ip_nonlocal_bind1允许 pgpool 在 VIP 还没漂过来时绑定地址watchdog 切换时更顺。limits里的nofile要大于max_connections加上 pgpool 连接池和后端进程的开销改完用su - postgres -c ulimit -n验证别只改文件不验证。2.3 目录、用户与权限安装路径和后续脚本的约定方案里创建postgres用户、配置安装文件夹、修改文件夹权限这些动作看起来琐碎但后面所有脚本都依赖这套路径约定。建议统一成PostgreSQL 装在/opt/pgsql数据目录/data/pgdata归档目录/data/pg_archivepg_rman 备份目录/data/pg_backuppgpool 工作目录/var/lib/pgpool日志目录/var/log/pgpool。路径一旦定下来postgresql.conf、pgpool.conf、备份脚本和附件里的安装脚本都按这个找后期换机器也容易复制。# 创建 postgres 用户和目录root 执行 groupadd -g 1001 postgres useradd -g postgres -u 1001 -m -s /bin/bash postgres passwd postgres mkdir -p /opt/pgsql /data/pgdata /data/pg_archive /data/pg_backup mkdir -p /var/lib/pgpool /var/log/pgpool chown -R postgres:postgres /opt/pgsql /data /var/lib/pgpool /var/log/pgpool chmod 700 /data/pgdata这里的关键是权限/data/pgdata必须 700属主是postgres不能用 root 跑initdb否则后面pg_ctl start会因为数据目录属主不对拒绝启动。/data/pg_archive和/data/pg_backup可以给 750但归档目录要允许 PostgreSQL 进程写入。pgpool 如果和 PostgreSQL 共用postgres用户启动/var/lib/pgpool和/var/log/pgpool也要归postgres如果单独建pgpool用户就要保证它能读pgpool.conf、写运行目录并且能通过 SSH 免密到备库执行提升命令。方案附件里的环境准备脚本和安装脚本本质上就是把这些路径、用户、权限和依赖包固定下来减少手工漏项。3. PostgreSQL 流复制从 initdb 到 walreceiver 跑通3.1 主库参数wal_level、max_wal_senders 与同步复制开关PostgreSQL 安装可以源码编译也可以用内网 rpm路径按/opt/pgsql走。依赖包常见的是readline-devel、zlib-devel、openssl-devel、libxml2-devel编译参数--prefix/opt/pgsql。装完先initdb -D /data/pgdata -E UTF8 --localeC再改postgresql.conf。流复制的核心参数不多但每一个都影响后面能不能跑通。# postgresql.conf 片段PostgreSQL 10/12 通用按内存和磁盘调整 listen_addresses * port 5432 wal_level replica max_wal_senders 10 wal_keep_segments 64 hot_standby on archive_mode on archive_command test ! -f /data/pg_archive/%f cp %p /data/pg_archive/%f # 同步复制先别开等备库跑通、压测后再开 synchronous_commit local # synchronous_standby_names standby1wal_levelreplica是流复制的最低要求记录足够多的 WAL 给备库重放max_wal_senders要大于备库数量加备份连接数只有一个备库时 10 足够后面加级联备库或 pg_basebackup 并发要往上调wal_keep_segments是主库保留的 WAL 段数备库落后太多时防止主库把还没传过去的 WAL 删掉小库 64 够用写入量大就加到 256 或者用复制槽hot_standbyon让备库可以接受只读查询这是后面 pgpool 读写分离的前提archive_modeon和archive_command是给 pg_rman 做归档备份用的归档目录要和数据目录分开。synchronous_commit先设local意思是主库本地写完就提交不等备库确认等主从稳定后再改成on并配synchronous_standby_names否则备库一挂主库写事务会卡住。参数改完重启主库pg_ctl start -D /data/pgdata -l /data/pgdata/startup.log。启动日志里看到database system is ready to accept connections才算起库成功不要只看命令返回值。listen_addresses改成*后要确认pg_hba.conf也本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
数据库表结构变更与特殊字符字段处理最佳实践 1. 数据表结构变更的常见场景与风险在数据库运维和开发过程中,数据表结构调整是再常见不过的操作。根据我15年数据库管理经验,约78%的表结构变更发生在系统上线后的迭代阶段。其中添加新字段的需求占比最高,达到结构变更总量的62%。这类操作看… · 2026/11/15 7:15:20
微电网EMS行业早报(10月30日)|岚县480兆瓦园区:光伏并网了,调度平台还在调试 📑 时间范围:2026年10月29日午后 — 10月30日 02:00(凌晨)。 📑 本文目录
开场|一个矛盾:屋顶先并了网,平台还在调一、今日行业政策动态 1. 新型电网方案:微电网被写成「… · 2026/11/15 7:15:20
2026年AI预训练技术革新:架构、训练与应用 1. 预训练技术的复兴背景2026年AI领域正在经历一场技术范式转移。过去三年间,随着算力瓶颈的突破和新型神经网络架构的出现,预训练技术正在经历自Transformer问世以来最重大的革新。这场变革并非简单的技术迭代,而是从模型架构、训练范式到应… · 2026/11/14 5:36:04
扬州特种工报名流程,上岗必备这些事你得知道 扬州特种工报名流程,上岗必备这些事你得知道 工地太忙根本没时间复习考试,特种作业证报名流程又复杂,很多工人一拖再拖,最后发现错过考试,岗位也上不了,项目还得停工。其实,特种作业证是 上岗必备… · 2026/11/15 7:15:01
不说再见电工证怎么考 郑州报考避坑指南 不说再见电工证怎么考 郑州报考避坑指南 你是不是也和我一样,学历不高,怕报不上名?别担心,电工证其实对学历的要求并没有那么高,只要你愿意花点心思,完全是可以考下来的。今天就以濮阳水利工程从业者为例,带你一步步了解【不说再见电工证怎么考】的全… · 2026/11/15 7:15:01
宁波低压电工证在哪考怎么报名 这个问题你必须知道 宁波低压电工证在哪考怎么报名 这个问题你必须知道 之前考的证在外省能不能转过来?你不是一个人。很多在宁波打工的电工朋友,都是在外省考的证,后来想回来发展,结果发现证件不被认可,或者要重新报名、考试,白白浪费时间和金钱。今天咱们就来聊聊… · 2026/11/15 7:15:01
买个初级电工证值不值得考?怕考不过白交培训费的看过来 买个初级电工证值不值得考?怕考不过白交培训费的看过来 怕考不过白交培训费?别急,咱们今天就来聊聊 买个初级电工证 到底值不值得考,尤其是你作为济源中小施工企业的负责人,手里正缺个电工证,又担心流程复杂、考不过、花冤枉钱,这些你关心的问题我全… · 2026/11/15 7:15:01
北京安装电工证丢了怎么补办 内部消息透露补办流程 北京安装电工证丢了怎么补办 内部消息透露补办流程 你正在找工作的关键时候,手里偏偏缺了个【北京安装电工证】,这事儿可太煎熬了,别急,我这儿有个 内部消息 ,告诉你怎么补办,还能快速拿到证,别让这个证耽误你上岗机会。… · 2026/11/15 7:15:01
怎样报考电工证贵不贵全流程办理指南 证书过期了不知道怎么复审延期 电工证含金量高不高怎么报考电工证贵不贵全攻略 证书过期了不知道怎么复审延期?你不是一个人,这是很多电工从业者遇到的真实问题。别急,今天咱们就来聊聊 怎样报考电工证贵不贵 ,同时带你看清电工证的 含金量… · 2026/11/15 7:14:00
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05