002.高可用解决方案
双机热备 HA
- PostgreSQL+RHCS
- RHCS 是一个高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合。
- PostgreSQL+Pacemaker+Corosync
- Pacemaker 是一个集群资源管理器。它利用集群基础构件(corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务(亦称资源)的最大可用性
![[HA.excalidraw|300]]
主从复制
- PostgreSQL 流复制+keepalived
- 成本低、使用简单、有数据一致性的风险切换后可能要重搭备库
- PostgreSQL 流复制+repmgr
- 安装简单、功能强大、知名公司做后盾
- PostgreSQL流复制+pgpool
- 读写分离、读的负载均衡、连接池
- 配合脚本可以自动failover、配置较复杂BUG较多,相关功能还在完善中。
![[keepalived.excalidraw|500]]
![[repmgr.excalidraw|800]]
![[pool.excalidraw|600]]
读写分离
- PostgreSQL流复制+pgpool一个/多个
- PostgreSQL流复制+mycat
- mycat读写分离、分表分库,功能强大
![[pgpool读写分离.excalidraw|500]]
![[mycat.excalidraw|500]]
分布式集群 1
- PostgreSQL+pg_shard
- PostgreSQL+pl/proxy
- PostgreSQL+FDW
- PostgreSQL+mycat
![[Mycat(分表分库).excalidraw|600]]
分布式集群
PostgreSQL +Citus
Citus 以插件的方式扩展到 postgresql 中,独立于 postgresql 内核,所以能很快的跟上 pg 主版本的更新,部署也比较简单,是现在非常流行的分布式方案。Citus 在苏宁有大规模应用,在 2019 年微软官宣收购 PostgreSQL 初创公司 Citus Data,也就是说微软也提供 citus 的商业支持。
Citus 节点主要分为协调节点和工作节点;协调节点(CN)不存储真实数据,只存储数据分布的元信息;实际的数据被分成若干分片,打散到不同 worker 节点中,应用连接协调节点,协调节点进行 sql 解析,生成分布式执行计划,下发到 worker 节点执行,cn 将结果汇总返回客户端。
缺点:因为没有全局事务管理,故不能保证数据的实时读一致性,但是性能上相比要好。数据写一致性使用 2 pc 来保证。
![[citus.excalidraw]]
PostgreSQL+Postgres-XL 分布式集群
Pgxc 是经典的分布式数据库架构,是真正的企业级 HTAP,我们看到市面上很多分布式数据库产品都是基于 pgxc 架构扩展而来。pgxc 是和 pg 内核紧耦合的,是嵌入到 pg 内核中,最初 pgxc 的核心开发者将 pgxc 商业化,创建了 stormdb,进行了一些并行算子优化,后来 stormdb 又被其它公司收购,然后将项目开源。
Postgres-XL 是一个可横向扩展的开源数据库集群,基于 Postgres-XC 开发,大部分代码是直接移植过来的,所以 pgxc 和 pgxl 是一脉相承的。
其实这个架构和 citus 类似,也是分为协调节点和数据节点数据也是通过 hash 分布到不同数据节点上,只是在集群中增添了全局事务管理组件,保证全局事务的一致性。
![[Postgre-XL.excalidraw|500]]
缺点:gtm 保证全局读一致性,两阶段提交保证全局写一致性,gtm 是整个系统的瓶颈点,并发一大就出问题。
多协调节点间需同步元数据信息,如协调节点失败,会造成 DDLhang 和事务阻塞。
Postgres-X2 是未来技术发展的方向:分布式集群化处理、保障数据强一致性、可横向扩展、高可用无单点故障,该项目的目标是整合 Postgres-XC 和 Postgres-XL,目前还未完全成熟。
PostgreSQL+Greenplum 分布式集群
Greenplum 是全球首个基于开源的全功能、多云、大规模并行处理(MPP)数据平台,兼具高级分析功能与传统 BI,能对 PB 级数据进行快速高效的查询、分析。greenplum 的用户在某种程度上甚至超越了 postgresql,很多人可能是通过 greenplum 才知道的 postgresql.
- 2006 年,Sun 与 Greenplum 联手打造即时数据仓库;
- 2008 年,Greenplum 进军中国市场;
- 2010 年,Greenplum 中国首届电信行业产品推广会;
- 2010 年, EMC 收购 Greenplum ;2012 年, EMC、VMware 和 Greenplum 又联手建新公司为 Pivota,将其整合到 EMC 云计算战略中。
- 2015 年, Greenplum 开源。
Master 节点存储全局系统元数据信息,不存储真实数据。
数据通过 hash 分布到不同的 segment 中,master 作为 sql 的全局入口,负责在 segment 中分配工作负载,整合处理结果,返回客户端。
![[Greenplum.excalidraw|600]]
优点:Greenplum 被广泛应用于金融、保险、证券、通信、航空、物流、零售、媒体、政府医疗、制造、能源等行业的多达实际生产环境中,为全球 2000 强企业的生产系统提供服务。
缺点:
- 在使用 join 时涉及到数据跨节点重分布的问题。
- Master 主控节点性能瓶颈,并发性能低,实际应用中并发小。