一、软件及版本
软件 | 版本 |
CentOS | 7.5 |
Patroni | 2.0.1 |
Etcd | 3.3.11 |
PostgreSQL | 10.12 |
二、主机规划
IP | 软件 | 备注 |
10.110.13.101 | Centos/pg/patroni | 主集群 |
10.110.13.102 | Centos/pg/patroni | 备集群 |
20.0.2.50 | etcd |
注:由于服务器有限,主备集群分别为一个节点,etcd同样为单节点,不影响主备集群数据同步效果。
三、主备集群postgres数据库安装部署
主集群
备集群

四、单机安装配置etcd

五、主备集群patroni安装
注:PostgreSQLl、etcd、patroni安装的文档很多并且都已经非常成熟可信,大家照着安装就好,我就不浪费篇幅和大家的时间再写一遍了。
六、主备中心patroni配置与测试
1. 主集群patroni(pg_cluster.yml)配置

介绍几个主要的配置项:
Scpoe :集群名,一个集群中的所有节点这个值都应该一样
Name:节点名称,同一个集群中节点名称不能相同
Restapi:patroni的地址和端口信息
Etcd3:etcd的地址和端口信息
Bootstrap:patroni初始化信息
Postgresql:postgresql数据库相关配置,包括IP/端口、密码、数据库目录、参数等信息
启动主集群patroni

可以看到日志数据库已启动,并且该节点为主集群主节点
2.备集群patroni(pg_cluster_standby.yml)配置

介绍几个主要的配置项(主要介绍与主集群不同的配置信息):

其中需要修改的有两部分,其他默认
host:为主中心任意一个可用节点的IP地址
Port:为主中心任意一个可用节点的端口信息
大家注意,这个配置只有备集群中的主节点才需要添加
启动备集群patroni


可以看到该节点为备集群的主节点
3. 查看主备两个集群状态并进行测试
主集群状态:

备集群状态:

可以看到两个集群状态正常,TL时间线一致,集群名不一样,属于不同的集群,一个是leader一个是standby leader
测试主备集群数据同步
我们在主集群创建表并添加数据,然后查看备中心数据是否同步

可以看到主备两个集群已经可以完成数据同步工作。
总结:很多时候在实际的工作当中,有时会遇到异地两数据中心需要数据同步的问题,有的是使用定时任务把主中心数据同步到备中心,有的是干脆配成一个集群,这些方法要么就是数据不够实时,要么就是网络不好主备中心连接断开时可能导致整个集群系统都不可用,所以如果大家再遇到类似的需求,patroni提供的主备集群间的数据同步是个很好的选择!





