标题应该没有违反广告法,因为不是商品
本教程为全国最完整的PGSQL高可用集群方案,以下的每一个步骤都事关重要。
如果你发现网上有比这个完整的教程,那肯定是百度搜索引擎的问题。
repmgr做主备搭建相对PGPOOL要容易一些,而且也不像PGPOOL那样有性能损耗。
用keepalived的目的是为了主备虚拟一个集群IP地址出来,避免单节点故障。
使用VIP进程守护的目的是为了避免VIP漂移到备用节点上。
不使用shell脚本处理VIP保持主节点的原因是不够灵活,逻辑不易理解,会给后续部署带来麻烦。
尽量避免使用编译安装的方式安装repmgr,会遇到很多问题。
为什么主节点挂了之后,主节点漂移,原来主节点需要手动添加到集群,当遇到这种情况的时候,建议人工介入检查一下,避免数据不一致。
田尚滨
----2021年15月01日
准备服务器
PGSQL一定要CPU多
数据库服务嘛,硬盘要大
安装环境
Centos7.8
Posgresql10
Repmgr10
两台服务器:
192.168.126.143
192.168.126.144
服务器名称:
hostnamectl set-hostname post1
hostnamectl set-hostname post2
数据库集群架构图
整体设计思路
1.先两台机器都安装Posgresql
2.两台机器都安装Repmgr
3.两台机器都设置postgres用户的相互信任
4.其中一台机器设置好po stgresql的配置文件,并且初始化数据库
5.另一台机器克隆数据库
6.修改repmgr的配置
7.将两台机器加入集群节点
8.测试两台都关机
9.测试关机一台
10.安装keepalived配置VIP
11.配置高可用
安装步骤
1.分别安装Postgresql和Repmgr
两节点同时操作
yum install -y gcc bison gcc-c++ readline readline-devel zlib zlib-devel perl perl-devel telnet openssl openssl-devel
systemctl stop firewalld
安装PGSQL
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql10-server
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
sudo systemctl enable postgresql-10
sudo systemctl start postgresql-10
安装REPMGR
curl https://dl.2ndquadrant.com/default/release/get/10/rpm | sudo bash
sudo yum repolist
yum search repmgr
yum --showduplicates list repmgr10
yum install repmgr10-4.4-1.el7
su postgres
ln -s /usr/pgsql-11/bin/repmgr /usr/local/sbin/
exit
安装完成后的路径如下:
可执行目录/usr/pgsql-10/bin/
数据实例的目录/var/lib/pgsql/10/data/
修改主节点的postgesql.conf
别的地方不改,默认改这几个地方
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 1000 # (change requires restart)
wal_log_hints=on
archive_mode=on
archive_command='test ! -f /pgarch/%f && cp %p /pgarch/%f'
shared_preload_libraries='repmgr'
修改主节点的pg_hba.conf
注意IP地址根据自己情况来配置
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 172.16.108.54/32 md5
host all all 192.168.126.144/32 trust
host all all 192.168.126.143/32 trust
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication repmgr trust
local repmgr repmgr trust
host replication repmgr 127.0.0.1/32 trust
host replication repmgr 192.168.126.143/32 trust
host replication