0


这些高可用架构,堪称PostgreSQL华佗

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

前言

本文对PostgreSQL华佗的高可用架构做了详细的阐述,均来自真实的企业生产环境

📣 1.Citus实现的分布式集群

Citus是一个PostgreSQL扩展,它将Postgres转换为分布式数据库,因此您可以在任何规模上实现高性能。
可以使用这些Citus超能力使您的Postgres数据库在单个Citus节点上扩展。或者,您可以构建一个能够处理高交易吞吐量的大型集群,尤其是在多租户应用程序中,运行快速分析查询,并处理大量时间序列或物联网数据进行实时分析。当数据大小和数量增长时,可以轻松地向集群中添加更多的工作节点并重新平衡碎片。

使用Citus,您可以用新的超能力扩展PostgreSQL数据库:
1.分布式表在PostgreSQL节点集群中进行分片,
以组合它们的CPU、内存、存储和I/O容量。
2.引用表被复制到所有节点,以便从分布式表中进行联接和外键,
从而获得最大的读取性能。
3.分布式查询引擎路由并并行化集群中分布式表上的SELECT、DML和其他操作。
4.列存储压缩数据,加快扫描速度,
并支持在常规表和分布式表上进行快速投影。
5.通过从任何节点进行查询,
您都可以利用集群的全部容量进行分布式查询

📣 2.OGG实现PG双主

OGG支持PostgreSQL数据库的初始化加载和事务数据的捕获和交付,俗话说就是针对于表的存量数据库和日志中的变化数据,捕获和交付对应于Extract和Replicat进程,翻译成中文可以“抽取”、“抓取”、“提取”,“投递”、“复制”、“应用”等等

通常来说OGG支持某种数据库,主要是针对于数据库的如下三个方面:
1.数据库本身的支持和限制:比如是否支持归档日志中抽取、
备库是否支持抽取、PostgreSQL的HA配置是否支持抽取等等。
2.数据库支持的数据类型:支持的数据类型和不支持的数据类型,
常用关系数据库的数据类型可能支持,
OGG针对数据库自带的一些或者高级的数据类型可能存在限制,比如json、pg_lsn等。
3.数据库支持的对象和操作:对象方面主要是指针对于表、
分区表、索引及序列的支持兼容特性。
而操作主要是针对DML(插入、更新和删除)、
DDL、truncate等操作的支持力度。

📣 3.Bucardo搭建PG的双主

Bucardo是PostgreSQL数据库中实现双向同步的软件,可以实现PostgreSQL数据库的双master的方案,不过bucardo中的同步都是异步的,它是通过触发器记录变化,程序是perl写的。Bucardo可以实现postgresql的多主复制、主从同步,甚至可以以postgresql为源库,可以和oracle、mysql、mongodb等很多数据库进行数据异步同步。

1.Bucardo 是基于表复制的系统,通过触发器记录变化,
同步的表必须有主键,不能同步DDL语句(truncate可以同步)。
2.Bucardo 可以实现PostgreSQL数据库的双master/多master的方案。
3.Bucardo的核心是一个Perl守护进程,它侦听通知请求并对其进行操作,
方法是连接到远程数据库并来回复制数据。

📣 4.主从的流复制

所谓流复制,就是备服务器通过tcp流从主服务器中同步相应的数据,主服务器在WAL记录产生时即将它们以流式传送给备服务器,而不必等到WAL文件被填充.

流复制场景:
√适合于单向同步。
√适合于任意事务,任意密度写(重度写)的同步。
√适合于HA、容灾、读写分离。
√适合于备库没有写,只有读的场景。

📣 5.Pgpool-II读写分离+负载均衡

Pgpool-II是一个在PostgreSQL服务器和PostgreSQL数据库客户端之间工作的中间件。Pgpool对服务器和应用来说几乎是透明的,现有的数据库应用程序基本上可以不需要更改就可以使用pgpool

pgpool工作进程:
Pcp进程:向pgpool发送管理命令的
父进程:负责检查数据库健康
Pgpool子进程:接受 发送sql
Work进程:检查延迟情况。
Pgpool logger:记录日志
Health Check:检查pg存活状态进程

📣 6.高可用之repmgr

repmgr是一个开源工具套件(类似于MySQL的MHA),用于管理PostgreSQL服务器集群中的复制和故障转移。它使用工具来增强PostgreSQL的内置热备份功能,以设置备用服务器,监控复制以及执行管理任务,例如故障转移或手动切换操作。

repmgr的特点是非常轻量,但功能全面:
监视主从流复制过程
自动故障切换和手动故障切换
支持分布式管理集群节点,易扩展,可以在线增加或者删除节点

📣 7.Keepalived实现PostgreSQL高可用

Keepalived可提供VRRP以及health-check功能,可以只用它提供双机浮动的vip(VRRP虚拟路由功能),这样可以简单实现一个双机热备高可用功能。

📣 8.高可用Patroni

Patroni 起源于Compose项目Governor的一个分支,Patroni采用DCS存储元数据,能够严格的保障元数据的一致性,可靠性高

其中Patroni不仅简单易用而且功能非常强大。
支持自动failover和按需switchover
支持一个和多个备节点
支持级联复制
支持同步复制,异步复制
支持同步复制下备库故障时自动降级为异步复制(功效类似于MySQL的半同步,但是更加智能)
支持控制指定节点是否参与选主,是否参与负载均衡以及是否可以成为同步备机
支持通过pg_rewind自动修复旧主
支持多种方式初始化集群和重建备机,包括pg_basebackup和支持wal_e,pgBackRest,barman等备份工具的自定义脚本
支持自定义外部callback脚本
支持REST API
支持通过watchdog防止脑裂
支持k8s,docker等容器化环境部署
支持多种常见DCS(Distributed Configuration Store)存储元数据,包括etcd,ZooKeeper,Consul,Kubernetes

高可用(High Availability, HA)部署是提供可靠性服务的一种解决方案,对于大多数基于PostgreSQL数据库的系统来说是非常重要的,后期如果更多的PG的学习,可以关注CSDN IT邦德
点击左下角阅读原文跳转


https://blog.csdn.net/weixin_41645135/category_11595830.html


本文转载自: https://blog.csdn.net/weixin_41645135/article/details/135026827
版权归原作者 IT邦德 所有, 如有侵权,请联系我们删除。

“这些高可用架构,堪称PostgreSQL华佗”的评论:

还没有评论