作为数据库开发者,单点故障导致的业务停摆是常见风险。PostgreSQL 原生流复制功能强大,通过合理配置即可低成本实现高可用。
本文将基于 CentOS/Ubuntu 环境下的 PostgreSQL 14,介绍从零搭建、配置调优到故障演练的完整流程。
1. 环境准备
1.1 基础环境要求
| 节点类型 | 服务器地址 | 系统版本 | PostgreSQL 版本 | 核心要求 |
|---|---|---|---|---|
| 主库(Master) | 192.168.42.140(示例) | CentOS 7/8/9 或 Ubuntu 20.04+ | 14 | 开启网络端口、关闭防火墙 / 放行 5432 端口 |
| 从库(Slave/Standby) | 192.168.42.145(示例) | 与主库一致 | 与主库完全一致 | 与主库网络互通、磁盘空间不小于主库 |
1.2 安装 PostgreSQL
确保两台服务器均安装相同版本的 PostgreSQL。
2. 主库配置
2.1 修改 PostgreSQL 主配置文件
主配置文件路径:/var/lib/pgsql/14/data/postgresql.conf
vim /var/lib/pgsql/14/data/postgresql.conf
修改以下核心参数(取消注释并调整值):
# 1. 监听地址(允许从库连接,可指定从库 IP 或 0.0.0.0 允许所有)
listen_addresses = '*'
# 2. 开启归档模式(主从复制依赖)
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/14/archive/%f'
# %p=归档文件路径,%f=归档文件名
# 提前创建归档目录
mkdir -p /var/lib/pgsql/14/archive && chown -R postgres:postgres /var/lib/pgsql/14/archive
# 3. WAL 日志配置(保证复制可靠性)
wal_level = replica
wal_buffers = 16MB
max_wal_senders = 10
wal_keep_size = 1GB
# 4. 同步模式(可选,按需配置)
# synchronous_commit = on
# synchronous_standby_names = 'slave1'
# 5. 其他优化(可选)
=


