作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理
微信:jem_db
QQ交流群:587159446
公众号:IT邦德
@
1.1 架构
2.etcd介绍
3.部署patroni
4.watchdog
5.集群运维
5.1 查看集群内节点信息
5.2 手动切换主备
5.3 初始化节点
6.总结
Patroni用于构建高可用 PostgreSQL 集群的工具,本文做了详细的说明
patroni+etcd提供了一系列的集群管理方案。
etcd负责集群状态信息的存放,用来联系各个节点,
patroni负责为集群提供高可用服务,
两者的集合为PostgreSQL集群提供了故障转移的高可用服务
,它不仅配置简单,而且功能丰富:
1.支持手动和自动故障转移
2.支持一主多从、级联复制
3.支持同步、异步模式
4.支持使用watchdog防止脑裂
Etcd是⼀款基于Raft算法和协议开发的分布式 key-value 数据库,基于Go语⾔编写,Patroni监控本地的PostgreSQL状态,并将相关信息写⼊Etcd,每个Patroni都能读写Etcd上的key,从⽽获取外地PostgreSQL数据库信息。当Etcd的leader节点不可⽤时,Etcd会⼀致性的选择⼀个合适的节点作为主节点,新的Etcd主节点将获取leader key,因此建议Etcd集群为三个以上且为奇数的节点。⼀个标准的3节点etcd集群,最⼤容许1个节点故障。
https://github.com/etcd-io/etcd
1.在各个节点部署python3。
需要使用高版本的python来使用patroni服务
2.在各个节点上部署patroni。
安装必要的依赖包和patroni软件
使用watchdog为防止出现脑裂,如果Leader节点异常导致patroni进程无法及时更新watchdog,会在Leader key过期的前5秒触发重启。重启如果在5秒之内完成,Leader节点有机会再次获得Leader锁,否则Leader key过期后,由备库通过选举选出新的Leader。Patroni会在将PostgreSQL提升为master之前尝试激活watchdog。如果看watchdog激活失败并且watchdog模式是required那么节点将拒绝成为主节点。在决定参加领导者选举时,Patroni还将检查watchdog配置是否允许它成为领导者。在将PostgreSQL降级后(例如由于手动故障转移),Patroni将再次禁用watchdog。当 Patroni处于暂停状态时,watchdog也将被禁用。正常停止Patroni服务,也会将watchdog禁用。
patronictl -c /etc/patroni/patroni.yml list
选择某一可用的从节点,使其成为主节点角色
patronictl -c /etc/patroni/patroni.yml switchover
查看集群状态
patronictl -c /etc/patroni/patroni.yml list
当某一节点与主库不同步,或者节点异常运行时,
可以使用此方法初始化节点信息以重新加入集群。
patronictl -c /etc/patroni/patroni.yml reinit pgsql
1.选择以下需要添加的节点名称:pgsql_node2
2.你确定要重新初始化成员 pgsql_node2?[y/N]:y
3.成功:为成员pgsql_node3执行初始化
Patroni用于构建高可用 PostgreSQL 集群的工具,它通过自动化的方式来管理主备切换、数据复制和集群健康检查。这篇文章将深入探讨 Patroni 的技术特性、应用场景及其优势,帮助你更好地理解和利用这一强大的 PostgreSQL 管理方案。