Linux怎么安装PostgreSQL 16主从同步 PostgreSQL高可用配置详解

轻瑶吖_1356

轻瑶吖_1356

2026-04-28

916人浏览

原创

pg_basebackup是主从同步最稳起点,必须配合-r参数自动生成standby.signal和postgresql.auto.conf,并设置listen_addresses='*'、wal_level=replica、max_wal_senders≥从库数、wal_keep_size足够等主库关键配置,缺一不可。

linux怎么安装postgresql 16主从同步 postgresql高可用配置详解

pg_basebackup 是主从同步最稳的起点,别手写复制 data 目录或 rsync —— 那不是同步,是埋雷。

主库必须开的几个关键配置项

主库的 postgresql.conf 不只是“能连上”就行,流复制依赖 WAL 的实时推送能力。以下参数缺一不可:

  • listen_addresses = '*':不光是为远程连接,从库的 walreceiver 进程要通过 TCP 主动拉取 WAL,必须监听非 localhost 地址
  • wal_level = replica:低于这个值(如 replica 以下的 archive)无法启用流复制;logical 可选但非必需
  • max_wal_senders = 10:必须 ≥ 从库数量;设为 0 就等于关掉复制通道
  • wal_keep_size = 1GB(或 wal_keep_segments 在旧版中):防止从库短暂断连后 WAL 被主库回收,导致“could not receive data from WAL stream: ERROR: requested WAL segment has already been removed”
  • archive_mode = on + archive_command:非强制,但建议配上,为 pg_basebackup 提供基础归档兜底,也方便后续做 PITR

从库初始化必须用 pg_basebackup,不能删 data 后 rsync

手动拷贝 data 目录看似快,实则跳过一致性快照、WAL 位点校验和 recovery 状态标记,极大概率启动失败或数据错乱。正确流程是:

Alpine Linux
Alpine Linux

获取最新发布版本;聚合最新版本架构

下载
  • 在从库机器上,用普通用户(如 postgres)执行:
    pg_basebackup -h 192.168.1.10 -U replicator -D /var/lib/pgsql/16/data -P -v -R -X stream -C -S pgslave1
  • -R:自动生成 standby.signal 和更新 postgresql.auto.conf(PG 12+ 不再用 recovery.conf)
  • -X stream:边备份边接收 WAL 流,保证起点一致;不用此参数,备份完成后再追 WAL 容易丢位点
  • -C:自动在主库创建复制槽(replication slot),防止 WAL 被提前清理 —— 这比 wal_keep_size 更可靠
  • 执行前确保主库已创建复制用户:
    CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'repl2026';

pg_hba.conf 的两处权限必须分开配

主库的 pg_hba.conf 要同时放行两类连接,顺序和类型不能混:

  • 普通客户端访问(如应用连接主库写入):
    host all all 0.0.0.0/0 scram-sha-256
  • 从库复制连接(只允许指定 IP + 复制用户):
    host replication replicator 192.168.1.11/32 scram-sha-256
  • 注意:replication 数据库名是关键字,不能写成 all 或具体 DB 名;认证方式推荐 scram-sha-256,避免明文传输密码
  • 改完后必须 reload:
    pg_ctl reload -D /var/lib/pgsql/16/data(不要 restart,否则中断复制)

验证主从状态别只看进程,要看系统视图

启动从库后,ps aux | grep walreceiver 有进程 ≠ 复制正常。真正要看的是:

  • 主库查发送状态:
    SELECT client_addr, state, sent_lsn, write_lsn, flush_lsn, replay_lsn FROM pg_stat_replication;
    理想状态是 state = 'streaming',且 replay_lsn 与 sent_lsn 差距小(毫秒级)
  • 从库查接收状态:
    SELECT * FROM pg_stat_wal_receiver;
    重点看 status = 'streaming' 和 last_msg_receipt_time 是否持续更新
  • 常见卡点:
    • 时间不同步 → WAL 时间戳校验失败
    • SELinux 或防火墙拦了 5432(或自定义端口)→ connection refused
    • 从库 pg_hba.conf 没配或配错 → 主库日志报 no pg_hba.conf entry

从库 standby.signal 文件一旦生成就别删,重启时它就是“我是备库”的唯一凭证;而主库上对应的复制槽(slot)也不能手动删,除非你确定不再需要这台从库 —— 删了会导致 WAL 积压爆磁盘。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.10

213

5

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4349

19

postgresql常用命令有哪些
postgresql常用命令有哪些

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。更详细的postgresql常用命令,大家可以访问下面的文章。

2023.11.16

627

3

postgresql常用命令介绍
postgresql常用命令介绍

postgresql常用命令有\l、\d、\d5、\di、\ds、\dv、\df、\dn、\db、\dg、\dp、\c、\pset、show search_path、ALTER TABLE、INSERT INTO、UPDATE、DELETE FROM、SELECT等。想了解更多postgresql的相关内容,可以阅读本专题下面的文章。

2023.11.20

1376

6

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

2026.02.12

460

19

PostgreSQL 性能优化与查询执行计划实战
PostgreSQL 性能优化与查询执行计划实战

本专题深入解析PostgreSQL性能优化核心,聚焦查询执行计划的实战应用。通过EXPLAIN命令精准定位瓶颈,结合索引策略、SQL改写与参数调优,系统提升查询效率。从执行计划解读到性能调优全流程,助你掌握数据库性能诊断与优化实战能力。

2026.05.08

150

10

PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践
PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践

本文详解如何利用Next.js(搭配Drizzle ORM)与Go后端构建高性能应用,充分发挥PG在JSONB非结构化存储与pgvector向量检索上的优势。从数据建模到Docker容器化部署,打造支持AI时代的“One Database”工程化解决方案。

2026.05.08

881

10

PostgreSQL高级特性、内核机制与现代数据架构
PostgreSQL高级特性、内核机制与现代数据架构

本专题从MVCC并发控制与WAL日志等内核机制出发,详解JSONB、PostGIS及pgvector等高级特性。探讨如何利用单一引擎支撑关系型、向量及图数据等现代数据架构需求,助您掌握构建高并发、智能化应用的核心技术。

2026.05.08

224

10

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3910

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习