PG高可用Repmgr可自动故障转移

目录

架构说明

步骤

1、修改主配置文件postgresql.conf

1.1 关闭数据库修改配置文件

1.2 启动数据库

2、给postgres用户sudo权限(root用户执行)

3、postgres用户配置免密

3.1 修改系统账户postgres密码

3.2 配置ssh信任(2主机都执行)

3.3 测试通信

4、安装repmgr软件

可能遇到的错误

5、在主库创建postgres用户

6、主库创建repmgr库及用户

配置repmgr 免密登录

7、主库节点编辑pg_hba.conf配置repmgr用户认证

8、主节点Repmgr配置文件

9、postgresql.conf文件添加Repmgr插件

可能的报错

10、主节点注册到集群

11、备节点配置

12、克隆主节点数据到备节点

12.1 删除从节点数据目录

12.2 执行前测试

12.3 克隆操作

13、 克隆完成后修改从配置文件

14、注册standby节点

15、验证主从是否正常

15.1 在主库上查看数据库集群状态

15.2 备库使用主库的IP登陆验证

15.3 备上查看集群信息

16、repmgr后台启动

17、failover验证

备库重做

repmgr架构说明


架构说明

架构

操作系统

IP

主机名

PG版本

端口

repmgr插件版本

磁盘空间

内存

CPU

centos7

192.168.18.9

pgserver01

PostgreSQL 17

5432

rrepmgr-5.5.0

25G

2G

2

centos7

192.168.18.11

pgserver02

PostgreSQL 17

5432

repmgr-5.5.0

25G

2G

2

先搭建单机环境再配置主从模式

repmgr下载 repmgr - Replication Manager for PostgreSQL clusters

repmgr 5.5.0 works with PostgreSQL 12 ~ PostgreSQL 17

文档地址:https://www.repmgr.org/docs/current/index.html

repmgr升级文档:https://www.repmgr.org/docs/current/upgrading-from-repmgr-3.html

注意:

1、自动故障切换,备提升为主之后,备库需要重做

步骤
1、修改主配置文件postgresql.conf

只修改主库192.168.18.9,因为备库后面会克隆主库的文件过来。

1.1 关闭数据库修改配置文件

192.168.18.9上

修改前备份上个版本的配置文件

cp /data/pg17/pgdata/postgresql.conf /data/pg17/pgdata/postgresql.conf.bak

停库systemctl stop postgresv17 或

su - postgres

pg_stop stop

vim /data/pg17/pgdata/postgresql.conf

修改以下参数:

cluster_name=‘repmgr01’ #实例名称

port=5433

shared_buffers=1GB # 物理内存的1/4

effective_cache_size=4GB # 调整为与内存一样大, 或者略小(减去shared_buffer)

提示:

1、虽然repmgr本身不需要wal归档,这里还是要检查是否设置归档

archive_mode = on

archive_command = 'cp %p /data/pg17/pgdata/archive_log/%f'

2、检查postgresql.conf中下列参数是否设置

wal_level=replica

max_replication_slots=10 ##

hot_standby_feedback=on

max_wal_senders=10 ##wal日志发送的最大进程数

wal_log_hints=on ##开启后记录特定提示位的变化,在wal日志中写入更多信息

hot_standby=on

1.2 启动数据库

pg_ctl start -D /data/pg17/pgdata

或 systemctl start postgresv17

2、给postgres用户sudo权限(root用户执行)

主 18.9上

[root@mysql001 ~]# vim /etc/sudoers 或 visudo

##允许“postgres”用户组的成员运行所有命令,且运行时不需要输入密码

%postgres ALL=(ALL) NOPASSWD: ALL

...
3、postgres用户配置免密
3.1 修改系统账户postgres密码

2台机器都修改

[root@pgserver01 ~]# echo "postgres" | passwd --stdin postgres

[root@pgserver02 ~]# echo "postgres" | passwd --stdin postgres

3.2 配置ssh信任(2主机都执行)

测试时使用操作系统账号root或者postgres用户都可以

18.9上

ssh-keygen -t rsa

ssh-copy-id 192.168.18.11

18.11 上

ssh-keygen -t rsa

ssh-copy-id 192.168.18.9

3.3 测试通信

18.9上 ssh 192.168.18.11 date

18.11上 ssh 192.168.18.9 date

4、安装repmgr软件

两个节点都需要安装,可两个节点同时安装,也可后续再安装节点2

[root@mysql002 ~]# cd /data

[root@mysql002 data]#tar -zxvf repmgr-5.5.0_pg13_17.tar.gz

mkdir /data/repmgr/

chown -R postgres: /data/repmgr

chown -R postgres: /data/repmgr-5.5.0

su - postg

<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监控,实时检测节点健康状态。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值