news 2026/4/16 13:29:28

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/4/16 17:44:57

AI语音治理与风险防控终极指南:构建负责任的技术应用完整策略

在人工智能语音技术迅猛发展的浪潮中,如何平衡技术创新与社会责任已成为政策制定者和技术管理者面临的核心挑战。AI语音治理与风险防控不仅关乎技术安全,更涉及个人隐私、社会信任和数字伦理的重塑。 【免费下载链接】parler-tts Inference and training…

作者头像 李华
网站建设 2026/4/16 16:04:55

ComfyUI-SeedVR2视频超分辨率完整教程:从模糊到4K的魔法升级

还在为老旧视频的模糊画质而头疼吗?当你把低分辨率视频放大时,是否总是得到满屏的马赛克和失真?今天我要向你介绍的ComfyUI-SeedVR2插件,将彻底改变你对视频放大的认知!这款基于先进AI算法的视频超分辨率工具&#xff…

作者头像 李华
网站建设 2026/4/15 15:19:18

函数装饰器@tf.function使用技巧大全

函数装饰器tf.function使用技巧大全 在构建高性能深度学习模型时,你是否曾遇到这样的困境:训练循环写得清晰易懂,但运行起来却慢得像爬?调试时一切正常,一上线性能却断崖式下跌?这背后往往藏着一个“隐形杀…

作者头像 李华
网站建设 2026/4/12 17:03:39

uv Python包管理器完整教程:快速提升开发效率的终极指南

uv Python包管理器完整教程:快速提升开发效率的终极指南 【免费下载链接】uv An extremely fast Python package installer and resolver, written in Rust. 项目地址: https://gitcode.com/GitHub_Trending/uv/uv 你是否曾经为Python包管理而烦恼&#xff1…

作者头像 李华
网站建设 2026/4/15 5:40:37

5分钟搭建专业开发者作品集:DevPortfolio完全配置指南

5分钟搭建专业开发者作品集:DevPortfolio完全配置指南 【免费下载链接】devportfolio A lightweight, customizable single-page personal portfolio website template built with JavaScript and Sass 项目地址: https://gitcode.com/gh_mirrors/de/devportfolio…

作者头像 李华
网站建设 2026/3/31 11:16:31

Open-AutoGLM自定义节点开发全流程解析,打造个性化AI工作流

第一章:Open-AutoGLM自定义开发概述Open-AutoGLM 是一个面向自动化自然语言处理任务的开源框架,支持用户基于预训练语言模型进行高效定制化开发。该平台提供模块化接口,允许开发者灵活集成数据预处理、模型微调、推理优化与部署发布等全流程功…

作者头像 李华