PostgreSQL 主从集群搭建

 更新时间:2026年02月09日 10:06:46   作者:思静鱼  
本文主要介绍了PostgreSQL 主从集群搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

下面是 PostgreSQL 主从复制(Streaming Replication)环境的安装与配置指南,适合在两台或多台服务器之间构建一主一从(或一主多从)的高可用读写分离系统。

环境准备

角色主机名/IP说明
主库192.168.1.10可读写,负责复制源
从库192.168.1.11只读,从主库同步数据

推荐 PostgreSQL 版本一致,例如 15.x;操作系统为 Ubuntu/CentOS 均可。

一、安装 PostgreSQL(主从都要装)

以 Ubuntu 为例:

sudo apt update
sudo apt install postgresql postgresql-contrib -y

CentOS:

sudo yum install -y postgresql-server postgresql-contrib

初始化数据库(如未自动初始化):

sudo -u postgres /usr/pgsql-15/bin/initdb -D /var/lib/pgsql/15/data

二、配置主库(192.168.1.10)

1. 修改postgresql.conf

路径通常为 /etc/postgresql/15/main/postgresql.conf 或 /var/lib/pgsql/15/data/postgresql.conf

# 启用 WAL 日志并设置参数
wal_level = replica
max_wal_senders = 10
wal_keep_size = 128MB
hot_standby = on
listen_addresses = '*'

2. 修改pg_hba.conf(允许从库连接复制)

# 添加允许从库复制连接
host    replication     all     192.168.1.11/32     md5

3. 重启主库

sudo systemctl restart postgresql

三、从库配置(192.168.1.11)

1. 停止 PostgreSQL 服务并清空数据目录

sudo systemctl stop postgresql
rm -rf /var/lib/postgresql/15/main/*

2. 使用pg_basebackup拉取主库数据

pg_basebackup -h 192.168.1.10 -D /var/lib/postgresql/15/main -U postgres -P -R

说明:

  • -h:主库 IP
  • -D:写入数据目录
  • -U:复制用户(需先创建)
  • -R:自动创建 standby.signal 和 primary_conninfo

如果提示用户不存在,请先在主库执行:

CREATE ROLE repl WITH REPLICATION LOGIN PASSWORD 'replpass';

并确保 pg_hba.conf 中允许该 IP 使用此用户连接。

3. 修改复制用户密码(如果-R中未设置)

编辑 postgresql.conf 确保:

primary_conninfo = 'host=192.168.1.10 port=5432 user=repl password=replpass'

四、启动从库

sudo systemctl start postgresql

检查日志 /var/log/postgresql/postgresql-15-main.log 是否同步成功。

五、验证主从同步

主库执行:

SELECT * FROM pg_stat_replication;

从库查看:

SELECT pg_is_in_recovery();  -- 返回 true 表示是从库

六、主从读写测试建议

操作主库从库
创建表/插入数据✅ 支持❌ 禁止
查询数据✅ 支持✅ 支持
自动同步✅ 向从库推送✅ 被动接收

七、开机自启动设置(主从)

sudo systemctl enable postgresql

八、参考目录结构(Debian/Ubuntu)

配置文件路径
postgresql.conf/etc/postgresql/15/main/
pg_hba.conf/etc/postgresql/15/main/
数据目录/var/lib/postgresql/15/main/
日志文件/var/log/postgresql/postgresql-15-main.log

常见问题排查

问题解决办法
pg_basebackup 报权限错误主库需创建 replication 权限用户
从库无法连接主库检查主库防火墙 / pg_hba.conf
主库 pg_stat_replication 为空检查从库连接信息是否正确
写入从库失败合理,PostgreSQL 只读备库默认禁止写入

高级扩展建议

目标建议工具
自动故障切换repmgr, Patroni
虚拟 IP 高可用切换Keepalived + VIP
读写分离中间件pgpool-II
多从、链式复制支持
双机部署脚本化自动搭建Ansible/脚本工具

到此这篇关于PostgreSQL 主从集群搭建的文章就介绍到这了,更多相关PostgreSQL 主从集群搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PostgreSQL ERROR: invalid escape string 解决办法

    PostgreSQL ERROR: invalid escape string 解决办法

    这篇文章主要介绍了PostgreSQL ERROR: invalid escape string 解决办法,本文环境是JDBC+PostgreSQL,需要的朋友可以参考下
    2014-07-07
  • Postgresql排序与limit组合场景性能极限优化详解

    Postgresql排序与limit组合场景性能极限优化详解

    这篇文章主要介绍了Postgresql排序与limit组合场景性能极限优化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • PostgreSQL时间线(timeline)和History File的用法

    PostgreSQL时间线(timeline)和History File的用法

    这篇文章主要介绍了PostgreSQL时间线(timeline)和History File的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • PostgreSQL索引的设计原则和最佳实践

    PostgreSQL索引的设计原则和最佳实践

    本文详细介绍了PostgreSQL索引设计的核心原则和最佳实践,本文将从 索引类型选择、列顺序设计、复合索引策略、部分索引应用、统计信息管理、反模式识别 六大维度,深入剖析 PostgreSQL 索引设计的核心原则,并提供可落地的最佳实践,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • PostgreSQL中rank()窗口函数实用指南与示例

    PostgreSQL中rank()窗口函数实用指南与示例

    在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名,本文将详细介绍rank()函数的使用方法,并通过多个实用示例展示其在不同场景下的应用,需要的朋友可以参考下
    2025-07-07
  • Postgresql ALTER语句常用操作小结

    Postgresql ALTER语句常用操作小结

    这篇文章主要介绍了Postgresql ALTER语句常用操作小结,本文讲解了增加一列、删除一列、更改列的数据类型、表的重命名、更改列的名字、字段的not null设置等常用操作的代码示例,需要的朋友可以参考下
    2015-06-06
  • PostgreSQL教程(四):数据类型详解

    PostgreSQL教程(四):数据类型详解

    这篇文章主要介绍了PostgreSQL教程(四):数据类型详解,本文讲解了数值类型、字符类型、布尔类型、位串类型、数组、复合类型等数据类型,需要的朋友可以参考下
    2015-05-05
  • postgresql 实现查询某时间区间的所有日期案例

    postgresql 实现查询某时间区间的所有日期案例

    这篇文章主要介绍了postgresql 实现查询某时间区间的所有日期案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL教程(一):数据表详解

    PostgreSQL教程(一):数据表详解

    这篇文章主要介绍了PostgreSQL教程(一):数据表详解表的定义、系统字段、表的修改、表的权限等4大部份内容,内容种包括表的创建、删除、修改、字段的修改、删除、主键和外键、约束添加修改删除等,本文讲解了,需要的朋友可以参考下
    2015-05-05
  • Win11安装PostgreSQL数据库的两种方式详细步骤

    Win11安装PostgreSQL数据库的两种方式详细步骤

    PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,这篇文章主要介绍了Win11安装PostgreSQL数据库的两种方式详细步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04

最新评论