如何在Linux中安装并配置PostgreSQL集群 Linux实现库同步的方法

秋浩小哥_7455

秋浩小哥_7455

2026-05-31

822人浏览

原创

直接用系统包管理器安装postgresql并配流复制更快更稳;主从同步必须用pg_basebackup初始化从库,手拷data目录或rsync会丢wal位点、缺recovery状态,99%启动失败。

如何在linux中安装并配置postgresql集群 linux实现库同步的方法

直接用系统包管理器安装 PostgreSQL 并配流复制,比源码编译快、稳、少踩坑;主从同步必须用 pg_basebackup 初始化从库,手拷 data 目录或 rsync 会丢 WAL 位点、缺 recovery 状态,99% 启动失败。

用 apt/dnf/yum 装 PostgreSQL 服务端(别下源码)

除非你明确需要自定义编译选项(如启用 llvmjit 或离线部署),否则不要碰源码。官方仓库包已预编译好、自动建 postgres 用户、注册 systemd 服务、初始化默认集群,路径和权限都对。

  • Ubuntu/Debian:sudo apt update && sudo apt install postgresql-16 postgresql-16-contrib
  • CentOS/RHEL 8+:sudo dnf install postgresql16-server postgresql16-contrib(先装 PGDG 仓库 rpm)
  • CentOS/RHEL 7:sudo yum install postgresql16-server postgresql16-contrib(注意后缀带版本号)

装完不需手动 initdb —— 包管理器已帮你执行,数据目录通常在 /var/lib/pgsql/16/data 或 /var/lib/postgresql/16/main。

主库必须改的 4 个配置项(漏一个就同步失败)

postgresql.conf 里只开 listen_addresses = 'localhost' 是不够的:从库的 walreceiver 进程要 TCP 连主库拉 WAL,必须监听真实 IP 或 *;同时 WAL 级别、发送进程数、保留量全得配齐。

  • listen_addresses = '192.168.10.102,localhost'(填主库实际 IP,别写 * 生产环境)
  • wal_level = replica(低于这个值无法启用流复制)
  • max_wal_senders = 10(必须 ≥ 从库数量;设为 0 就等于关掉复制通道)
  • wal_keep_size = 1GB(防止从库断连后主库回收 WAL,报 requested WAL segment has already been removed)

改完不用 systemctl restart,sudo systemctl reload postgresql-16 即可生效 —— restart 会中断正在传输的 WAL 流。

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载

从库必须用 pg_basebackup 初始化(禁止 rsync / cp data)

手动拷贝 data 目录看似快,实则跳过一致性快照、WAL 起始位点校验、standby.signal 创建,大概率启动时报 could not locate a valid checkpoint record 或直接拒绝启动。

  • 先在主库创建复制用户:CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'repl2026';
  • 在从库机器上,以 postgres 用户执行:pg_basebackup -h 192.168.10.102 -U replicator -D /var/lib/pgsql/16/data -P -R -X stream -C
  • 其中 -R 自动生成 standby.signal 和更新 postgresql.auto.conf(PG 12+ 不再用 recovery.conf)
  • -X stream 表示边备份边接收 WAL,保证起点一致;没它,备份完再追 WAL 容易丢位点

执行前确认从库 data 目录为空,且属主是 postgres;执行后别改 postgresql.auto.conf 里的 primary_conninfo,那是 -C 自动写的。

pg_hba.conf 要分两行配,顺序和数据库名不能错

主库的 pg_hba.conf 必须同时放行两类连接:普通应用访问(走 all DB)和从库复制连接(走 replication 关键字 DB)。这两类规则不能混成一行,也不能颠倒顺序。

  • 应用连接(主库写入):host all all 0.0.0.0/0 scram-sha-256
  • 从库复制(只允许指定 IP + 复制用户):host replication replicator 192.168.10.103/32 scram-sha-256

注意:replication 是固定关键字,不是数据库名;写成 all 或 postgres 都无效。改完必须 pg_ctl reload -D /var/lib/pgsql/16/data 或 systemctl reload postgresql-16,不能只改文件不 reload。

最易被忽略的是:从库启动后,别只看 ps aux | grep postgres 有没有进程,要进 psql 查 select * from pg_stat_replication;(主库查)和 select pg_is_in_recovery();(从库查)—— 前者为空说明没连上主库,后者返回 f 说明根本没进 standby 模式。

相关文章

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

233

5

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

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

2023.11.02

4469

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

647

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

1396

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

244

10

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

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

2023.06.21

4050

4

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

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

共0课时 | 0人学习