repmgr集群部署-PostgreSQL高可用保证

📢📢📢📣📣📣

作者:IT邦德

中国DBA联盟(ACDU)成员,10余年DBA工作经验,

Oracle、PostgreSQL ACE

CSDN博客专家及B站知名UP主,全网粉丝10万+

擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,

安装迁移,性能优化、故障应急处理

文章目录

1.repmgr介绍

repmgr是一个开源工具套件(类似于MySQL的MHA),用于管理PostgreSQL服务器集群中的复制和故障转移。它通过设置备用服务器、监视复制和执行管理任务(如故障转移或手动切换操作)的工具增强了PostgreSQL的内置热备份功能。

https://www.repmgr.org/

2.部署规划

操作环境版本:centos7.6

数据库版本:PostgreSQL 14.11

Repmgr版本:repmgr-5.3.3

节点规划(简化部署,规划两个节点)

3.repmgr安装

复制代码
su - postgres
wget https://repmgr.org/download/repmgr-5.3.3.tar.gz
tar -zxvf repmgr-5.3.3.tar.gz 
cd repmgr-5.3.3
./configure
make -j 4 && make install

4.主节点postgresql.conf配置

复制代码
listen_addresses = '*'
wal_level = 'replica'
archive_command = 'cp %p /dbs/pg14/archive/%f' 
shared_preload_libraries ='repmgr'
logging_collector = on

5.主节点repmgr.conf配置

复制代码
mkdir -p /pg14/conf
vi /pg14/conf/repmgr.conf

node_id=1
node_name='pghost01'
conninfo='host=pghost01 user=repmgr dbname=repmgr connect_timeout=2'
data_directory='/dbs/pg14/data'
pg_bindir='/pg14/soft/bin'

--日志参数
log_level=INFO
log_file='/pg14/conf/repmgr.log'

6.主节点创建插件

复制代码
连接数据库,创建repmgr用户和数据库
create user repmgr WITH REPLICATION LOGIN ENCRYPTED PASSWORD 'pg@1234' superuser;
create database repmgr owner repmgr; 
create extension repmgr;

7.注册主节点

复制代码
要使repmgr支持复制集群,必须向repmgr注册主节点。
这将安装repmgr 扩展和元数据对象,并添加主服务器的元数据记录
repmgr -f /pg14/conf/repmgr.conf primary register
验证集群状态
repmgr -f /pg14/conf/repmgr.conf cluster show

8.配置备节点repmgr.conf

复制代码
mkdir -p /pg14/conf
vi /pg14/conf/repmgr.conf

node_id=2
node_name='pghost02'
conninfo='host=pghost02 user=repmgr dbname=repmgr connect_timeout=2'
data_directory='/dbs/pg14/data'
pg_bindir='/pg14/soft/bin'

log_level=INFO
log_file='/pg14/conf/repmgr.log'

9.克隆备节点

复制代码
以下操作在备节点执行,注意此时备节点$PGDATA目录必须为空。
repmgr -h pghost01 -U repmgr \
-d repmgr -f /pg14/conf/repmgr.conf standby clone

10.启动、注册备节点

复制代码
pg_ctl -D $PGDATA start

注册备节点:
repmgr -f /pg14/conf/repmgr.conf standby register

查看集群状态
repmgr -f /pg14/conf/repmgr.conf cluster show

11.配置两节点信任

复制代码
步骤1: 分别在主备节点上使用postgres用户执行ssh-keygen 创建公钥和密钥
ssh-keygen -t rsa
步骤2: 用 ssh-copy-id 把公钥复制到对端主机上
ssh-copy-id -i /home/postgres/.ssh/id_rsa.pub postgres@192.168.3.9
ssh-copy-id -i /home/postgres/.ssh/id_rsa.pub postgres@192.168.3.10
步骤3: 主备节点相互验证
systemctl restart sshd
ssh 192.168.3.9 
ssh 192.168.3.10

12.切换验证

复制代码
注意:
1./pg14/conf/repmgr.conf的读写权限和属主正确
2.记得加环境变量(主备节点)
vi ~/.bashrc
--添加以下变量定义
export PGHOME=/pg14/soft
export PGDATA=/dbs/pg14/data
export PGPORT=5666
export PATH=$PGHOME/bin:$PATH:.

source ~/.bashrc

手动切换需在备节点执行以下命令:
repmgr -f /pg14/conf/repmgr.conf standby switchover -U repmgr --verbose
查看集群状态
repmgr -f /pg14/conf/repmgr.conf cluster show

13.常用操作

总结

repmgr的特点是非常轻量,但功能全面,监视主从流复制过程,自动故障切换和手动故障切换

支持分布式管理集群节点,易扩展,可以在线增加或者删除节点,分享给大家,希望能帮助到大家!

相关推荐
瀚高PG实验室3 小时前
PostgreSQL 优化器统计信息可能会在视图、分区或子表中暴露采样数据HGVE-2025-E006
数据库·postgresql·瀚高数据库
NoSi EFUL3 小时前
学生成绩管理系统(MySQL)
android·数据库·mysql
Yeats_Liao3 小时前
Trae 配置 MySQL MCP 指南
数据库·mysql
java干货3 小时前
Redis 分布式限流的四大算法与终极形态
数据库·redis·分布式
Polar__Star3 小时前
SQL如何高效导出大规模的分组汇总数据_利用分页与索引
jvm·数据库·python
2201_761040593 小时前
HTML怎么显示复杂图表摘要_HTML数据结论文字描述区【详解】
jvm·数据库·python
m0_746752303 小时前
HTML怎么标注回收估价规则_HTML估价逻辑说明折叠区【指南】
jvm·数据库·python
Greyson13 小时前
SQL如何解决GROUP BY导致查询变慢_利用覆盖索引进行优化
jvm·数据库·python
AllData公司负责人3 小时前
AllData数据中台通过开源项目RustFS建设现代数据湖存储,接入工业, 医疗, 物联网数据,包括文件/图像/音频/视频数据!
数据库·数据仓库·物联网·开源·数据存储·数据接入·rustfs
m0_613856293 小时前
html标签如何插入图片_html中img标签的正确使用方式【方法】
jvm·数据库·python