news 2026/7/8 12:17:51

PostgreSQL 18 主从架构实战:3步配置流复制,实现读写分离与高可用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PostgreSQL 18 主从架构实战:3步配置流复制,实现读写分离与高可用

PostgreSQL 18 主从架构实战:3步配置流复制,实现读写分离与高可用

在当今数据驱动的业务环境中,数据库的高可用性和读写分离能力已成为企业级应用的标配。PostgreSQL 18 作为最新版本的开源关系型数据库,其流复制功能为企业提供了稳定可靠的数据同步方案。本文将带您深入实践,通过三个关键步骤快速搭建生产级主从架构。

1. 环境准备与主节点配置

在开始配置前,我们需要确保所有节点满足以下基础条件:

  • 操作系统:Alibaba Cloud Linux 3/CentOS 8 或兼容系统
  • 硬件资源:建议至少4核CPU、8GB内存、100GB存储
  • 网络环境:节点间网络延迟<5ms,建议使用内网专线连接

1.1 安装PostgreSQL 18

首先在主节点执行以下命令添加官方YUM源并安装:

# 禁用系统默认PostgreSQL模块(仅CentOS 8需要) if [ -f /etc/os-release ]; then . /etc/os-release if [ "$ID" = "centos" ] && [ "${VERSION_ID%%.*}" = "8" ]; then sudo dnf --assumeyes module disable postgresql fi fi # 添加PostgreSQL官方仓库(使用阿里云镜像加速) sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/postgresql/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo sed -i "s@https://download.postgresql.org/pub@http://mirrors.cloud.aliyuncs.com/postgresql@g" /etc/yum.repos.d/pgdg-redhat-all.repo sudo sed -i "s@\$releasever@8@g" /etc/yum.repos.d/pgdg-redhat-all.repo # 安装服务端软件 sudo dnf install -y postgresql18-server

1.2 初始化主库配置

初始化数据库并修改关键参数:

# 初始化数据目录 sudo /usr/pgsql-18/bin/postgresql-18-setup initdb # 修改postgresql.conf核心参数 sudo tee -a /var/lib/pgsql/18/data/postgresql.conf << EOF listen_addresses = '*' wal_level = replica max_wal_senders = 3 archive_mode = on archive_command = 'test ! -f /var/lib/pgsql/18/archivedir/%f && cp %p /var/lib/pgsql/18/archivedir/%f' hot_standby = on EOF # 创建归档目录 sudo mkdir -p /var/lib/pgsql/18/archivedir sudo chown postgres:postgres /var/lib/pgsql/18/archivedir

1.3 配置复制用户与权限

创建专用复制账号并设置访问规则:

# 启动服务 sudo systemctl enable --now postgresql-18 # 创建复制用户 sudo -u postgres psql -c "CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'SecurePass123!';" # 配置pg_hba.conf访问规则 sudo tee -a /var/lib/pgsql/18/data/pg_hba.conf << EOF host replication replica_user <从节点IP>/32 scram-sha-256 EOF # 创建物理复制槽(防止WAL日志被过早清理) sudo -u postgres psql -c "SELECT pg_create_physical_replication_slot('standby_slot1');" # 重启服务生效 sudo systemctl restart postgresql-18

注意:将<从节点IP>替换为实际从节点内网IP,生产环境密码应使用更复杂的组合

2. 从节点部署与数据同步

从节点需要从主库获取基础数据并配置为只读模式。

2.1 基础安装与准备

在从节点执行与主节点相同的安装步骤,但跳过初始化:

# 安装软件包(同主节点) sudo dnf install -y postgresql18-server # 创建密码文件 sudo -u postgres bash -c "echo '<主节点IP>:5432:replication:replica_user:SecurePass123!' > ~/.pgpass" sudo -u postgres chmod 600 ~/.pgpass

2.2 数据同步与配置

使用pg_basebackup进行基础备份:

# 清空现有数据目录 sudo rm -rf /var/lib/pgsql/18/data/* sudo chown postgres:postgres /var/lib/pgsql/18/data # 从主库同步数据 sudo -u postgres pg_basebackup -h <主节点IP> -D /var/lib/pgsql/18/data -U replica_user -P -v --wal-method=stream -R # 创建standby标识文件 sudo -u postgres touch /var/lib/pgsql/18/data/standby.signal

关键配置参数说明:

参数文件关键配置项作用说明
postgresql.confprimary_conninfo主库连接信息
postgresql.confprimary_slot_name复制槽名称
standby.signal(空文件)声明该实例为备库

2.3 启动从节点服务

完成配置后启动从节点:

sudo systemctl enable --now postgresql-18 # 验证复制状态 sudo -u postgres psql -c "SELECT pid, state, sync_state, replay_lag FROM pg_stat_replication;"

3. 高可用验证与优化

架构搭建完成后,需要进行全面的功能验证和性能调优。

3.1 复制状态监控

主节点上执行以下命令检查复制状态:

-- 查看复制连接状态 SELECT client_addr AS 从节点IP, state AS 状态, sync_state AS 同步模式, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn)) AS 延迟大小, EXTRACT(SECOND FROM (now() - reply_time)) AS 延迟秒数 FROM pg_stat_replication; -- 查看复制槽状态 SELECT slot_name, active, restart_lsn, confirmed_flush_lsn FROM pg_replication_slots;

3.2 故障转移测试

模拟主节点故障并验证高可用性:

  1. 停止主节点服务

    sudo systemctl stop postgresql-18
  2. 提升从节点为主

    sudo -u postgres pg_ctl promote -D /var/lib/pgsql/18/data
  3. 应用切换验证

    • 检查新主节点是否可读写
    • 验证历史数据完整性
    • 测试新写入数据是否持久化

3.3 性能优化建议

根据实际业务负载调整以下参数:

# 主节点postgresql.conf优化项 max_wal_senders = 5 # 根据从节点数量调整 wal_keep_size = 2GB # 保留的WAL日志大小 synchronous_commit = remote_apply # 同步提交级别 # 从节点postgresql.conf优化项 hot_standby_feedback = on # 避免主库vacuum清理正在查询的数据 max_standby_streaming_delay = 30s # 查询冲突时的最大延迟

4. 生产环境进阶配置

对于企业级应用,还需要考虑以下增强配置。

4.1 同步复制配置

确保数据零丢失的同步复制模式:

-- 在主节点执行 ALTER SYSTEM SET synchronous_standby_names = 'standby_slot1'; -- 验证配置 SELECT name, setting FROM pg_settings WHERE name LIKE 'synchronous%';

同步模式对比:

模式配置值数据安全性性能影响
异步off可能丢失少量数据最低
同步remote_write可能丢失1个事务中等
强同步remote_apply零数据丢失较高

4.2 自动故障转移方案

推荐使用Patroni等工具实现自动故障检测与切换:

# 示例Patroni配置片段 postgresql: parameters: wal_level: replica hot_standby: "on" use_pg_rewind: true recovery_conf: recovery_target_timeline: latest standby_mode: "on"

4.3 监控与告警配置

关键监控指标建议:

  • 主节点

    SELECT pg_current_wal_lsn() AS current_lsn, pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) AS bytes_lag FROM pg_stat_replication;
  • 从节点

    SELECT pg_last_wal_receive_lsn() AS received_lsn, pg_last_wal_replay_lsn() AS replayed_lsn, pg_is_in_recovery() AS is_standby;

通过以上步骤,您已经成功搭建了PostgreSQL 18的高可用主从架构。这套方案不仅实现了数据的实时同步和读写分离,还能在主机故障时快速恢复服务,为业务连续性提供了坚实保障。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 12:12:38

开服装店三年,我总结了同城引流的6个核心经验

同城流量&#xff0c;是所有实体服装店老板这两年最焦虑的事。以前靠地段、靠发传单&#xff0c;现在顾客都在短视频平台上刷到别人家的新款&#xff0c;再跑到店里试穿&#xff0c;试完又去网上搜同款。如果店里没有持续的线上曝光&#xff0c;连进店的人都会越来越少。我自己…

作者头像 李华
网站建设 2026/7/8 12:12:08

TDA7468与PIC18F2525音频控制系统设计与优化

1. 音频控制芯片组合方案概述在音频处理领域&#xff0c;TDA7468和PIC18F2525的组合堪称经典搭配。TDA7468是意法半导体(ST)推出的一款专业级音频处理器芯片&#xff0c;具有输入选择、音量控制、音调调节等完整功能&#xff1b;而PIC18F2525则是Microchip公司生产的高性能8位微…

作者头像 李华
网站建设 2026/7/8 12:09:24

别再瞎写Prompt了!5步教你玩转Vibe Coding

上一篇我们聊了 Vibe Coding 是什么、为什么它是一次编程范式的转变。这一篇进入实操层面&#xff1a;怎么把 Vibe Coding 真正落地到日常开发中&#xff0c;而不是"跟AI瞎聊几句然后祈祷代码能跑"。很多人用AI编程工具效果差&#xff0c;本质原因只有一个&#xff1…

作者头像 李华
网站建设 2026/7/8 12:08:12

经销商数字化订货系统|打通上下游高效协同

经销商数字化订货系统&#xff5c;打通上下游高效协同 专为品牌工厂、批发贸易、连锁加盟打造&#xff0c;适配经销商下单、门店批量采购、渠道分销全场景&#xff0c;一站式提供渠道管控、分佣裂变、数据管理一体化数字化营销解决方案。 核心功能一览 预存款管理 客户提前预缴…

作者头像 李华
网站建设 2026/7/8 12:06:55

IIM-20670运动传感器与MK51微控制器的集成应用

1. IIM-20670运动传感器深度解析 IIM-20670是TDK InvenSense推出的一款高性能6轴运动跟踪MEMS器件&#xff0c;集成了3轴陀螺仪和3轴加速度计。这款传感器在工业控制、无人机导航、机器人姿态稳定等领域具有广泛应用。 1.1 核心性能参数 该传感器最突出的特点是其宽动态范围配…

作者头像 李华
网站建设 2026/7/8 12:06:10

OpenClaw(小龙虾)快速部署指南|新手也能轻松 “养虾”

OpenClaw&#xff08;小龙虾&#xff09;Windows\苹果系统 一键部署保姆级教程 | 10 分钟养出你的数字员工&#xff08;2026 最新版&#xff09; 前言 2026 年热门的开源 AI 智能体 OpenClaw&#xff08;昵称小龙虾&#xff09;&#xff0c;GitHub 星标超 28 万&#xff0c;凭…

作者头像 李华