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的特点是非常轻量,但功能全面,监视主从流复制过程,自动故障切换和手动故障切换 支持分布式管理集群节点,易扩展,可以在线增加或者删除节点,分享给大家,希望能帮助到大家!
