【转载】【PostgreSQL架构】PostgreSQL的最佳集⾼可⽤性
⽅案
转⾃:
什么是⾼可⽤性?
它是服务可⽤的时间量,通常由企业定义。
冗余是⾼可⽤性的基础;万⼀发⽣事故,我们可以继续毫⽆问题地运转。
持续恢复
如果发⽣事件,则必须还原备份,然后应⽤wal⽇志;恢复时间将⾮常长,我们不会谈论⾼可⽤性。
但是,如果我们将备份和⽇志存档在应急服务器中,则可以在⽇志到达时应⽤它们。
如果⽇志每隔1分钟发送和应⽤⼀次,则应急基础将处于连续恢复状态,并且到⽣产的时间最多为1分钟。
备⽤数据库
备⽤数据库的想法是保留⽣产数据库的副本,该副本始终具有相同的数据,并且可以在发⽣事件时使⽤。
有⼏种⽅法可以对备⽤数据库进⾏分类:
根据复制的性质:
物理备⽤数据库:复制磁盘块。
逻辑备⽤数据库:流式传输数据更改。
通过事务的同步性:
异步:可能会丢失数据。
同步:不会丢失数据;主服务器中的提交等待备⽤服务器的响应。
通过⽤法:
热备⽤:它们不⽀持连接。
热备⽤:⽀持只读连接。
集是⼀组⼀起⼯作的主机,被视为⼀个主机。
这提供了⼀种实现⽔平可伸缩性的⽅法,并提供了通过添加服务器来处理更多⼯作的能⼒。
它可以抵抗节点的故障并继续透明地⼯作。
根据共享的内容,有两种模型:
共享存储:所有节点都使⽤相同的信息访问相同的存储。
不共享:每个节点都有⾃⼰的存储,取决于我们系统的结构,该存储可能与其他节点具有相同的信息。
现在让我们回顾⼀下PostgreSQL中的⼀些集选项。
分布式复制块设备(Distributed Replicated Block Device)DRBD是⼀个Linux内核模块,可使⽤⽹络实现同步块复制。它实际上不实现集,也不处理故障转移或监视。为此,您需要补充软件,例如Corosync + Pacemaker + DRBD。
例:
Corosync:处理主机之间的消息。
Pacemaker:启动和停⽌服务,确保它们仅在⼀台主机上运⾏。
DRBD:在块设备级别同步数据。
集控制(ClusterControl)
ClusterControl是⽤于数据库集的⽆代理管理和⾃动化软件。它可直接从其⽤户界⾯帮助部署,监视,管理和扩展数据库服务器/集。ClusterControl能够处理维护数据库服务器或集所需的⼤多数管理任务。
使⽤ClusterControl,您可以:
在您选择的技术堆栈上部署独⽴的,复制的或集的数据库。
跨多语⾔数据库和动态基础架构统⼀⾃动化故障转移,恢复和⽇常任务。
您可以创建完整或增量备份并计划它们。
对整个数据库和服务器基础结构进⾏统⼀和全⾯的实时监控。
只需⼀个操作即可轻松添加或删除节点。
在PostgreSQL上,如果发⽣事件,可以⾃动将您的从属提升为主状态。
它是⼀个⾮常完整的⼯具,带有免费的社区版本(还包括免费的企业试⽤版)。
红宝⽯(Rubyrep)
异步,多主机,多平台复制(在Ruby或JRuby中实现)和多DBMS(MySQL或PostgreSQL)的解决⽅案。
基于触发器,它不⽀持DDL,⽤户或授权。
使⽤和管理的简单性是其主要⽬标。
⼀些功能:
配置简单
安装简单
常见mpp数据库
平台独⽴,表格设计独⽴。
Pgpool II
它是⼀种在PostgreSQL服务器和PostgreSQL数据库客户端之间⼯作的中间件。
⼀些功能:
连接池
复写
⾃动故障转移
并⾏查询
Bucardo
基于⾏的异步级联主从复制,使⽤触发器在数据库中排队;基于⾏的异步主-主复制,基于⾏,使⽤触发器和⾃定义冲突解决⽅案。Bucardo需要专⽤的数据库并作为Perl守护程序运⾏,该守护程序与此数据库以及复制中涉及的所有其他数据库进⾏通信。它可以作为多主机或多从机运⾏。
主从复制涉及到⼀个或多个⽬标的⼀个或多个源。源必须是PostgreSQL,但是⽬标可以是
PostgreSQL,MySQL,Redis,Oracle,,SQLite或MongoDB。
⼀些功能:
1. 负载均衡
2. 从站不受限制,可以写
3. 部分复制
4. 按需复制(更改可以⾃动或在需要时推送)
5. 从站可以“预热”以快速设置
缺点:
⽆法处理DDL
⽆法处理⼤物件
没有唯⼀键⽆法增量复制表
不适⽤于Postgres 8之前的版本
Postgres-XC
Postgres-XC是⼀个开源项⽬,旨在提供可写扩展,同步,对称和透明的PostgreSQL集解决⽅案。它是紧密耦合的数据库组件的集合,可以将其安装在多个硬件或虚拟机中。
写可伸缩性意味着Postgres-XC可以配置任意数量的数据库服务器,并且与单个数据库服务器相⽐,可以处理更多的写操作(更新SQL语句)。
您可以有多个客户端连接到的数据库服务器,该服务器提供数据库的单个⼀致的集范围视图。
来⾃任何数据库服务器的任何数据库更新对于在不同主服务器上运⾏的任何其他事务都是⽴即可见的。
透明意味着您不必担⼼内部如何将数据存储在多个数据库服务器中。
您可以配置Postgres-XC在多个服务器上运⾏。您为每个表选择的数据以分布式⽅式存储,即分区或复制。发出查询时,Postgres-XC会确定⽬标数据的存储位置,并向包含⽬标数据的服务器发出相应的查询。
Citus
Citus⽤内置的⾼可⽤性功能(例如⾃动分⽚和复制)替代了PostgreSQL。Citus分⽚将您的数据库分⽚,并在整个商品节点集中复制每个分⽚的多个副本。如果集中的任何节点不可⽤,Citus会将所有写⼊或查询透明地重定向到其他⼀个包含受影响的分⽚副本的节点。
⼀些功能:
⾃动逻辑分⽚
内置复制
⽤于灾难恢复的数据中⼼感知复制
具有⾼级负载平衡功能的中查询容错
您可以增加由PostgreSQL⽀持的实时应⽤程序的正常运⾏时间,并最⼤程度地减少硬件故障对性能的影响。您可以使⽤内置的⾼可⽤性⼯具来实现此⽬标,从⽽最⼤程度地减少成本⾼昂且易于出错的⼿动⼲预。
PostgresXL
它是⼀种⽆共享的多主集解决⽅案,可以透明地在⼀组节点上分配表,并并⾏执⾏这些节点的查询。它具有⼀个称为全局事务管理器(GTM)的附加组件,⽤于提供集的全局⼀致视图。该项⽬基于PostgreSQL 9.5版本。⼀些公司,例如2ndQuadrant,为该产品提供商业⽀持。
PostgresXL是可⽔平扩展的开源SQL数据库集,具有⾜够的灵活性来处理各种数据库⼯作负载:
OLTP写密集型⼯作负载
需要MPP并⾏性的商业智能
运营数据存储
键值存储
GIS地理空间
混合⼯作负载环境
多租户提供商托管环境
组件:
全局事务监视器(GTM):全局事务监视器确保集范围内的事务⼀致性。
协调器:协调器管理⽤户会话并与GTM和数据节点进⾏交互。
数据节点:数据节点是存储实际数据的位置。
结论
还有许多其他产品可以为PostgreSQL创建我们的⾼可⽤性环境,但是您必须注意以下⼏点:
新产品,未经充分测试
停产项⽬
局限性
许可费⽤
⾮常复杂的实现
不安全的解决⽅案
您还必须考虑您的基础架构。如果只有⼀台应⽤程序服务器,那么⽆论您配置了多少数据库的⾼可⽤性,如果应⽤程序服务器发⽣故障,则将⽆法访问。您必须很好地分析基础架构中的单点故障,并尝试解决它们。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。