相关推荐recommended
这些高可用架构,堪称PostgreSQL华佗
作者:mmseoamin日期:2023-12-19

📢📢📢📣📣📣

哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验

一位上进心十足的【大数据领域博主】!😜😜😜

中国DBA联盟(ACDU)成员,目前服务于工业互联网

擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。

✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.Citus实现的分布式集群
    • 📣 2.OGG实现PG双主
    • 📣 3.Bucardo搭建PG的双主
    • 📣 4.主从的流复制
    • 📣 5.Pgpool-II读写分离+负载均衡
    • 📣 6.高可用之repmgr
    • 📣 7.Keepalived实现PostgreSQL高可用
    • 📣 8.高可用Patroni

      前言

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

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

      Citus是一个PostgreSQL扩展,它将Postgres转换为分布式数据库,因此您可以在任何规模上实现高性能。

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

      使用Citus,您可以用新的超能力扩展PostgreSQL数据库:

      1.分布式表在PostgreSQL节点集群中进行分片,

      以组合它们的CPU、内存、存储和I/O容量。

      2.引用表被复制到所有节点,以便从分布式表中进行联接和外键,

      从而获得最大的读取性能。

      3.分布式查询引擎路由并并行化集群中分布式表上的SELECT、DML和其他操作。

      4.列存储压缩数据,加快扫描速度,

      并支持在常规表和分布式表上进行快速投影。

      5.通过从任何节点进行查询,

      您都可以利用集群的全部容量进行分布式查询

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

      📣 2.OGG实现PG双主

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

      通常来说OGG支持某种数据库,主要是针对于数据库的如下三个方面:

      1.数据库本身的支持和限制:比如是否支持归档日志中抽取、

      备库是否支持抽取、PostgreSQL的HA配置是否支持抽取等等。

      2.数据库支持的数据类型:支持的数据类型和不支持的数据类型,

      常用关系数据库的数据类型可能支持,

      OGG针对数据库自带的一些或者高级的数据类型可能存在限制,比如json、pg_lsn等。

      3.数据库支持的对象和操作:对象方面主要是指针对于表、

      分区表、索引及序列的支持兼容特性。

      而操作主要是针对DML(插入、更新和删除)、

      DDL、truncate等操作的支持力度。

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

      📣 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守护进程,它侦听通知请求并对其进行操作,

      方法是连接到远程数据库并来回复制数据。

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

      📣 4.主从的流复制

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

      流复制场景:

      √适合于单向同步。

      √适合于任意事务,任意密度写(重度写)的同步。

      √适合于HA、容灾、读写分离。

      √适合于备库没有写,只有读的场景。

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

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

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

      pgpool工作进程:

      Pcp进程:向pgpool发送管理命令的

      父进程:负责检查数据库健康

      Pgpool子进程:接受 发送sql

      Work进程:检查延迟情况。

      Pgpool logger:记录日志

      Health Check:检查pg存活状态进程

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

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

      📣 6.高可用之repmgr

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

      repmgr的特点是非常轻量,但功能全面:

      监视主从流复制过程

      自动故障切换和手动故障切换

      支持分布式管理集群节点,易扩展,可以在线增加或者删除节点

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

      📣 7.Keepalived实现PostgreSQL高可用

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

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

      📣 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

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

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

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

      点击左下角阅读原文跳转

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

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