news 2026/3/10 17:29:50

PostgreSQL高可用集群实战:repmgr完整配置指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PostgreSQL高可用集群实战:repmgr完整配置指南

PostgreSQL高可用集群实战:repmgr完整配置指南

【免费下载链接】repmgrA lightweight replication manager for PostgreSQL (Postgres)项目地址: https://gitcode.com/gh_mirrors/re/repmgr

项目概述

repmgr是PostgreSQL生态系统中备受推崇的复制管理工具,专门为构建高可用数据库集群而生。作为一款轻量级的复制管理器,repmgr能够有效管理PostgreSQL服务器集群中的复制和故障转移。它通过提供一系列实用程序来增强PostgreSQL的内置复制功能,包括设置备用服务器、监控复制状态以及执行故障转移或切换操作等管理任务。

最新版本的repmgr(5.5.x)支持PostgreSQL 13到17的所有版本。该工具采用GNU GPL 3许可证发布,由EnterpriseDB维护和支持。

环境准备与安装

系统要求

在开始部署repmgr之前,请确保系统中已安装PostgreSQL。repmgr支持在多种Linux发行版上运行,包括CentOS、Ubuntu、Debian等。

源码编译安装

通过以下步骤完成repmgr的源码编译安装:

# 克隆项目仓库 git clone https://gitcode.com/gh_mirrors/re/repmgr # 进入项目目录 cd repmgr # 配置编译环境 ./configure # 编译源码 make # 安装到系统 sudo make install

安装完成后,repmgr命令行工具将可用于后续的集群管理操作。

核心配置详解

PostgreSQL配置要求

在主服务器上,PostgreSQL实例必须已初始化并正在运行。需要调整以下复制相关配置参数:

# 启用复制连接,设置此值至少比将连接到此服务器的备用服务器数量多一个 max_wal_senders = 10 # 如果使用复制槽,设置此值至少比将连接到此服务器的备用服务器数量多一个 max_replication_slots = 10 # WAL级别设置 wal_level = 'hot_standby' # 在备用服务器上启用只读查询 hot_standby = on # 启用WAL文件归档 archive_mode = on archive_command = '/bin/true'

创建repmgr用户和数据库

在主服务器上创建专用的PostgreSQL超级用户账户和用于存储repmgr元数据的数据库:

CREATE USER repmgr WITH SUPERUSER LOGIN PASSWORD 'repmgr_password'; CREATE DATABASE repmgr OWNER repmgr;

认证配置

在pg_hba.conf文件中确保repmgr用户具有适当的权限:

local replication repmgr trust host replication repmgr 127.0.0.1/32 trust host replication repmgr 192.168.1.0/24 trust local repmgr repmgr trust host repmgr repmgr 127.0.0.1/32 trust host repmgr repmgr 192.168.1.0/24 trust

集群初始化流程

主节点配置

在主服务器上创建repmgr.conf配置文件,必须包含以下参数:

node_id=1 node_name='node1' conninfo='host=node1 user=repmgr dbname=repmgr connect_timeout=2' data_directory='/var/lib/postgresql/data'

注册主服务器

要启用repmgr支持复制集群,必须将主节点注册到repmgr中:

repmgr -f /etc/repmgr.conf primary register

注册过程将安装repmgr扩展和元数据对象,并为主服务器添加元数据记录。

备用节点配置

在备用服务器上创建repmgr.conf文件,必须包含与主节点相同的参数,但需要调整必要的值:

node_id=2 node_name='node2' conninfo='host=node2 user=repmgr dbname=repmgr connect_timeout=2' data_directory='/var/lib/postgresql/data'

克隆备用服务器

使用--dry-run选项检查备用服务器是否可以被克隆:

repmgr -h node1 -U repmgr -d repmgr -f /etc/repmgr.conf standby clone --dry-run

如果没有报告问题,则可以克隆备用服务器:

repmgr -h node1 -U repmgr -d repmgr -f /etc/repmgr.conf standby clone

注册备用服务器

注册备用服务器:

repmgr -f /etc/repmgr.conf standby register

集群状态验证

复制状态检查

连接到主服务器并执行以下查询来验证复制状态:

SELECT * FROM pg_stat_replication;

从PostgreSQL 9.6开始,还可以使用pg_stat_wal_receiver视图从备用服务器检查复制状态。

集群显示

执行集群显示命令来查看所有节点的状态:

repmgr -f /etc/repmgr.conf cluster show

该命令将显示集群中所有节点的详细信息,包括节点ID、名称、角色、状态、上游节点等。

高级配置选项

自动故障转移配置

要启用自动故障转移,需要在repmgr.conf中设置:

failover='automatic'

监控设置

配置监控相关参数:

monitoring_history=yes monitor_interval_secs=2

服务控制命令

对于使用systemd等初始化系统的环境,可以配置服务控制命令:

service_start_command = 'sudo systemctl start postgresql-16' service_stop_command = 'sudo systemctl stop postgresql-16' service_restart_command = 'sudo systemctl restart postgresql-16'

故障排除与维护

常见问题处理

  • 网络连接问题:确保主备服务器之间的网络连接正常
  • 认证配置:检查pg_hba.conf文件中的认证规则
  • 权限问题:确保repmgr用户具有足够的权限

集群健康检查

定期执行节点检查来确保集群健康:

repmgr -f /etc/repmgr.conf node check

最佳实践建议

生产环境部署

  • 使用专用网络进行复制通信
  • 配置适当的监控和告警
  • 定期进行故障转移测试

性能优化

  • 合理配置WAL相关参数
  • 使用复制槽避免WAL积累
  • 监控复制延迟并及时处理

通过本指南的详细步骤,您可以成功构建和管理基于repmgr的PostgreSQL高可用集群。repmgr提供了强大的复制管理功能,能够有效保障数据库服务的连续性和数据的安全性。

【免费下载链接】repmgrA lightweight replication manager for PostgreSQL (Postgres)项目地址: https://gitcode.com/gh_mirrors/re/repmgr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

【Linux命令大全】001.文件管理之lsattr命令(实操篇)

【Linux命令大全】001.文件管理之lsattr命令(实操篇) ✨ 本文为Linux系统磁盘管理命令的全面汇总与深度优化,结合图标、结构化排版与实用技巧,专为高级用户和系统管理员打造。 (关注不迷路哈!!!…

作者头像 李华
网站建设 2026/3/10 4:29:20

物理信息神经网络速成指南:3步攻克微分方程求解难题

物理信息神经网络速成指南:3步攻克微分方程求解难题 【免费下载链接】PINNpapers Must-read Papers on Physics-Informed Neural Networks. 项目地址: https://gitcode.com/gh_mirrors/pi/PINNpapers 还在为复杂的微分方程求解而头疼吗?传统数值方…

作者头像 李华
网站建设 2026/3/6 7:32:47

ESP32固件校验失败原因及烧录参数调整建议

ESP32烧录总出错?一文搞懂固件校验失败的根源与实战解决方案你有没有遇到过这种情况:辛辛苦苦编译完代码,信心满满地执行esptool.py write_flash,结果却弹出一行红字:A fatal error occurred: Failed to verify flash …

作者头像 李华
网站建设 2026/3/6 3:50:18

悦读电子书城微信小程序的设计与实现任务书

兰州工业学院本科毕业设计任务书题 目悦读电子书城微信小程序的设计与实现学 院计算机与人工智能学院专业班级网络21-1学生姓名学 号202103030104类别√工程设计 £理论研究/论文 £其他来源£教师命题 √学生自拟题 £校企合作 £其他是否在…

作者头像 李华
网站建设 2026/3/9 14:53:17

Arduino IDE安装后如何接入DHT11传感器?

从零开始:Arduino IDE装好后,如何让DHT11温湿度传感器“开口说话”?你刚装好 Arduino IDE,手边还有一块 DHT11 温湿度传感器,心里想着:“接下来怎么让它工作?”别急——这正是每个嵌入式开发者的…

作者头像 李华
网站建设 2026/3/10 11:58:09

从零实现虚拟串口通信:基础配置手把手教学

手把手教你从零搭建虚拟串口通信:开发调试的隐形加速器 你有没有遇到过这样的场景? 手头正在调试一块STM32开发板,上位机软件也写好了,但串口线插来插去总出问题——要么是驱动冲突,要么是COM端口被占用;…

作者头像 李华