 哈喽!大家好,我是【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.通过从任何节点进行查询, 您都可以利用集群的全部容量进行分布式查询

 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

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: