PostgreSQL 高可用 Repmgr 命令及配置文件(三)

本文详细介绍了Repmgr的配置文件参数及其含义,包括node_id、node_name、conninfo等,同时提供了手动切换主从节点、提升从库为主库、查看节点状态等基本命令的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应该是第三个关于PostgreSQL 高可用的文字了,Repmgr 在使用中的一些通用的命令和一些配置文件的含义,今天需要明确。

我们先从配置文件来入手,如果你的配置文件不知道怎么写,或者根本不知道配置文件中有哪些内容,请从 

https://repmgr.org/docs/4.4/repmgr-administration-manual.html  网站中获得。

部分配置文件内容:

node_id=1    node_id 是标识数据库的节点的序号,在使用其他命令时,是需要指定相关序号的,并且相关的序号在一个集群中是不能重复的。

node_name = ‘XXX’ node name 是标识这台机器在集群中的名字,需要注意的是名字不能超过63个字符并且,最好是小写,明确标识机器的文字

conninfo='host=192.168.198.112 user=repmgr dbname=repmgr connect_timeout=2'   这是标识每台集群中到PG 的连接的信息,connect_timeout 是配置当你使用 repmgrd时,忽略某些因为网络延迟或故障中可能会导致误切换的等待时间的长度

data_directory='/pgdata/data'  这是指定当前机器的PG的数据目录,因为有的集群中每个机器的数据目录可能因为某些原因,不一致,所以这里会告知repmgr 具体的数据目录在哪里

config_directory=''  这是配置标识,PG的配置文件的所在地,一般可以不配置,如果你的配置文件并未和数据目录放置在一起,则你需要配置

replication_user='repmgr'   配置PG中复制的账户,这里使用了repmgr作为复制的账户,当然你可以使用别的账户进行复制的配置,而不必须非要使用repmgr 来作为复制的账户。

replication_type=physical   这里需要告知REPMGR PG 的复制方式,是那个,一般建议physical 如果没有特殊的需求。

location=default 这个配置是为多数据中心来进行服务的,如果有多数据中心,一般会假设如果网络不稳定的状态下,是否进行切换或者不做任何事情,location就是标识你的机器所在的位置

witness_sync_interval  这是标识出第三方的见证服务器获取信息到见证服务器的时间

log_level =INFO   这里指定了log的level 有相关八个等级

log_file='' 重定向LOG file的写入的位置否则只能写入到系统的STDERR 

pg_bindir=  指定PG 的执行文件的目录

repmgr_bindir = 指定 PG 的 repmgr 执行文件的目录

failover=manual  指定当发生主节点failover时节点的处理方式是自动还是手动方式

priority = 100  当你有多个PG的从节点,怎么人为的来判断哪个更适合来做下一个主节点的候选。

reconnect_attempts =  当主节点无法连接时,重进进行连接的次数

当然上面的介绍是比较基本的信息,有一些更有深层次含义和设置的项目并不包含在里面,例如MYSQL MHA 中如果主节点进行切换,则MHA 会让用户填写下一步会执行的外部脚本,在 REPMGR 中也有相关的设置。

大致说完了相关的配置文件后,下面是一些基本的REPMGR 的基本命令的介绍

1  手动进行主从节点的切换

一般来说,如果要对主库的服务器进行硬件升级,或者操作会需要将主库进行关闭,而类似这样的行为是有准备的和计划的

下面我们就通过手动的命令来将主库切换为从库

 请到从库服务器中执行如下命令, 下面就会开始模拟进行切换的过程或者告诉你一些信息或错误信息,如果你去掉 --dry-run 则就实际的执行了,如果使用过 pt-osc的同学对--dry-run会有深刻的影响

repmgr -f /etc/repmgr.conf standby switchover --dry-run

切换后,在查看当前的集群信息,也会进行相应的修改

这是比较有用的一个功能

2  提升从库成为主库

在你选择了FAILOVER 中手动进行从库到主库的提升,你需要手动进行主库的提升

 repmgr -f /etc/repmgr.conf standby promote 

3  查看当前节点的状态

repmgr -f /etc/repmgr.conf node status

4  在主节点失败后,其他的从节点如果还连接着失败的主节点或者已经失去的连接,则是不妥当的,需要有相关的命令来将这些连接错误的节点重新连接到新的主节点中。在错误连接主节点的

repmgr -f /etc/repmgr.conf standby follow

5 查看当前的节点与其他节点的连接情况

repmgr -f /etc/repmgr.conf cluster matrix

总结:其实在repmgr 的使用中,可以感觉到,即使不需要自动failover ,repmgr 在快速建立流复制从库和检查节点之间的状态也是很好的工具。

<think>好的,我现在要回答用户关于如何使用repmgr部署PostgreSQL高可用集群的问题。首先,我需要回顾用户提供的引用内容,确保回答准确。 根据引用[2],部署过程分为准备工作和主库配置。用户需要先在所有节点安装repmgrPostgreSQL。主库需要修改postgresql.conf,调整max_wal_senders、wal_level等参数。这部分是关键,因为正确的配置是复制的基础。然后创建复制用户和数据库,注册主节点。接下来是备库的安装和配置,同样需要修改配置文件,并从主库克隆数据。注册备库后,集群就初步搭建完成了。 用户提到的引用[3]指出,虽然主从搭建完成,但还存在自动故障转移和节点管理的问题。这里需要补充repmgr的故障检测和切换机制,比如设置repmgrd守护进程,并配置参数如failover=automatic。同时,可能需要结合外部工具如SLB来处理入口分离,而不是使用pgpool,这点需要强调。 接下来,用户可能需要知道如何验证集群状态,使用repmgr cluster show命令。此外,监控和日志管理也是重要环节,确保及时发现和处理问题。 生成相关问题时,要考虑用户可能的后续需求,比如如何扩展节点、如何处理网络分区或数据不一致的情况,以及与其他高可用方案的对比。例如,引用[1]提到Repmgr和Patroni的对比,可以引导用户进一步了解不同工具的优缺点。 需要确保回答结构清晰,分步骤讲解,并引用正确的来源。同时,注意使用中文,数学公式和代码块的格式正确。最后,检查是否有遗漏的步骤或常见问题,确保用户能够顺利部署并理解后续管理方法。</think>### 使用repmgr部署PostgreSQL高可用集群的步骤 以下流程基于引用内容整理,涵盖主从节点配置、故障转移及注意事项。 #### 1. 准备工作 - **所有节点**安装PostgreSQLrepmgr ```bash # 以CentOS为例 yum install postgresql-server repmgr ``` - 确保所有节点网络互通,SSH免密登录配置完成[^2]。 #### 2. 主库配置 **2.1 修改`postgresql.conf`** ```bash max_wal_senders = 10 max_replication_slots = 10 wal_level = 'hot_standby' hot_standby = on archive_mode = on archive_command = '/bin/true' # 禁用归档(repmgr无需归档) ``` **2.2 创建复制用户与数据库** ```sql CREATE USER repmgr WITH SUPERUSER LOGIN; CREATE DATABASE repmgr OWNER repmgr; ``` **2.3 注册主节点** ```bash repmgr primary register # 注册当前节点为主库 ``` #### 3. 备库配置 **3.1 同步主库数据** ```bash repmgr -h <主库IP> -U repmgr -d repmgr standby clone ``` **3.2 启动并注册备库** ```bash pg_ctl start repmgr standby register # 注册为备库 ``` #### 4. 验证集群状态 ```bash repmgr cluster show # 显示节点角色与状态 ``` 输出示例: ``` ID | Name | Role | Status | Upstream ---+--------+---------+-----------+--------- 1 | node1 | primary | * running | 2 | node2 | standby | running | node1 ``` #### 5. 实现自动故障转移 **5.1 启动守护进程`repmgrd`** ```bash repmgrd -d --verbose # 所有节点启动监控守护进程 ``` **5.2 配置`repmgr.conf`** ```ini failover=automatic # 启用自动切换 promote_command='repmgr standby promote' follow_command='repmgr standby follow' ``` #### 6. 注意事项 - **入口分离**:建议结合云服务商SLB(如AWS ALB或阿里云SLB)实现流量分发,避免使用pgpool增加复杂度[^3]。 - **节点扩容**:新节点需重复步骤3,并通过`repmgr node join`加入集群。 - **监控告警**:配置`repmgr`日志与Prometheus监控,实时检测节点健康状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值