REPMGR 是一套在PostgreSQL服务器集群中用于管理复制和故障转移的开源工具 。它支持并增强了PostgreSQL的 内置流式复制,提供单个读/写主服务器 以及一个或多个只读备用数据库,其中包含主数据库的近实时副本服务器的数据库。
它提供了两个主要工具:
工具 | 作用 | 具体用途 |
---|---|---|
repmgr | 用于执行管理任务的命令行工具 | 设置备用服务器,将备用服务器提升为主服务器,切换主服务器和备用服务器,显示复制群集中服务器的状态 |
repmgrd | 主动监视复制群集中的服务器的守护程序 | 监视和记录复制性能,通过检测主数据库和提升最合适的备用服务器,向用户定义的群集中事件提供有关事件的通知 可以执行任务的脚本,例如通过电子邮件发送警报 |
01 repmgr 版本对应支持的PostgreSQL版本
02 部署环境
操作系统:Scientific Linux release 7.9 (Nitrogen)
PostgreSQL版本:PostgreSQL 15.1
repmgr版本:repmgr-5.3.3
03 安装PostgreSQL
--安装相关依赖:
yum -y install gcc gcc_c++ libyaml python* readline readline-devel zlib zlib-devel
--关闭防火墙,设置selinux(各节点)
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
--创建目录及用户
mkdir -p /data/pg15
mkdir -p /data/pgarch
mkdir -p /usr/local/pg15
useradd postgres
chown -R postgres:postgres /data
chown -R postgres:postgres /usr/local/pg15
chmod 700 /data/pg15
--源码安装PG15.2(postgres用户,所有节点)
tar -xvf postgresql-15.2.tar.gz
cd postgresql-15.2
./configure --prefix=/usr/local/pg15/
make world && make install-world
04 设置环境变量
cat .bashrc
export PGDATA=/data/pg15
export PGHOME=/usr/local/pg15/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGHOME/lib
export PATH=$PATH:$PGHOME/bin/
export PGPORT=5435
source .bashrc
05 初始化数据库(主节点)
initdb -D /data/pg15
--配置pg_hba.conf
host all all 192.168.126.0/24 md5
local replication repmgr trust
host replication repmgr 127.0.0.1/32 trust
host replication repmgr 192.168.126.0/24 trust
local repmgr repmgr trust
host repmgr repmgr 127.0.0.1/32 trust
host repmgr repmgr 192.168.126.0/24 trust
--配置postgresql.conf
listen_addresses = '*'
port = 5435
shared_buffers = 256MB
wal_level = replica
max_wal_size = 1GB
log_destination = 'csvlog'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_file_mode = 0600
archive_mode = on
archive_command = 'cp %p /data/pgarch/%f'
max_wal_senders = 10
max_replication_slots = 10
hot_standby = on
--启动数据库
pg_ctl start -D /data/pg15
06 设置PostgreSQL开机自启(主备相同步骤设置)
[root@pg15_rh7_132 ~]# cd /home/postgres/postgresql-15.1/contrib/start-scripts/
[root@pg15_rh7_132 ~]# cp linux /etc/init.d/postgresql
[root@pg15_rh7_132 ~]# chmod +x