最后更新:2020-03-24 11:22:55 手机定位技术交流文章
如果您的系统依赖于PostgreSQL数据库,并且您正在为高可用性寻找集群解决方案,我们希望提前通知您,这是一项复杂的任务,但并非不可能实现。
我们将讨论一些解决方案,您可以从中选择您的容错要求。
PostgreSQL本身不支持任何多主机集群解决方案,如MySQL或Oracle然而,仍然有许多商业和社区产品提供这种实现,以及其他产品,如PostgreSQL复制或负载平衡。
首先,让我们回顾一些基本概念:
什么是高可用性?
是服务可用的时间量,通常由企业定义
冗余是高可用性的基础;万一发生事故,我们可以继续运作,没有任何问题。
连续恢复
如果发生事件,必须恢复备份并应用日志。恢复时间将非常长,我们不会谈论高可用性。
但是,如果我们将备份和日志存档在应急服务器中,我们可以在日志到达时应用它们。
如果每1分钟发送并应用一次日志,紧急情况将处于连续恢复状态,生产时间将长达1分钟。
备用数据库
备用数据库的想法是保留生产数据库的一个副本,该副本总是具有相同的数据,并且可以在事件发生时使用
有几种方法来分类备用数据库:
根据复制的性质:
物理备用数据库:拷贝磁盘块逻辑备用数据库:流数据更改通过事务同步:
异步:数据可能丢失同步:无数据丢失;主服务器中的提交等待备用服务器的响应通过使用:
热备用:它们不支持连接热备用:支持只读连接

群集
群集是一组一起工作的主机,被视为一台主机
这提供了一种通过添加服务器来实现水平可扩展性和处理更多工作的能力的方法。
它可以抵抗节点故障并继续透明地工作
根据共享的内容,有两种模式:

现在让我们回顾一下PostgreSQL中的一些集群选项
分布式复制块设备
DRBD是一个可以使用网络实现同步块复制的Linux内核模块。它实际上不实现集群,也不处理故障转移或监控要做到这一点,你需要额外的软件,如同步+起搏器+DRBD。

案例:
Corosync:处理主机之间的消息起搏器:启动和停止服务,以确保它们只在一台主机上运行DRBD:在块设备级别同步数据
群集控制
群集控制是用于数据库群集的无代理管理和自动化软件它可以从用户界面直接帮助部署、监控、管理和扩展数据库服务器/集群
ClusterControl可以处理维护数据库服务器或群集所需的大多数管理任务

使用集群控制,您可以:
在您选择的技术堆栈上部署独立的、复制的或集群的数据库跨多语言数据库和动态基础架构统一自动化故障转移、恢复和日常任务您可以创建完整备份或增量备份,并对其进行计划对整个数据库和服务器基础架构进行统一、全面的实时监控可以在一次操作中轻松添加或删除节点。在PostgreSQL上,如果发生事件,您的下属可以自动提升到主状态
是一个非常完整的工具,有一个免费的社区版本(包括一个免费的企业试用版)


Ruby rep
异步、多主机、多平台复制(在Ruby或JRuby中实现)和多数据库管理系统(MySQL或PostgreSQL)解决方案
是基于触发器的,不支持DDL、用户或授权
的简单使用和管理是其主要目标
:
的部分功能配置简单、安装简单、平台独立、表设计独立Pgpool II
它是一个在PostgreSQL服务器和PostgreSQL数据库客户端之间工作的中间件
:
连接池复制负载平衡自动故障转移并行查询

bucardo
基于行的异步级联主从复制的某些功能,使用触发器在数据库中排队;基于行的异步主机到主机复制,基于行,使用触发器和自定义冲突解决方案
Bucardo需要一个专用数据库,并作为一个Perl守护进程运行,该守护进程与该数据库和复制中涉及的所有其他数据库进行通信它可以作为多主机或多从机运行
主从复制涉及一个或多个目标的一个或多个源源必须是PostgreSQL,但目标可以是PostgreSQL、MySQL、Redis、Oracle、MariaDB、SQLite或MongoDB
:
负载平衡从站的某些功能不受限制,可以根据需要写入和复制部分副本(更改可以自动进行或在需要时推送)从站可以“预热”以快速设置缺点:
不能处理没有唯一键的DDL不能处理大型对象不能增量复制表不适用于Postgres 8之前的版本Postgres-xc
Postgres-xc是一个开源项目,旨在提供可扩展的同步它是紧密耦合的数据库组件的集合,可以安装在多个硬件或虚拟机中
写可伸缩性意味着Postgres-XC可以配置任意数量的数据库服务器,并且可以处理比单个数据库服务器更多的写操作(更新SQL语句)。
您可以将多个客户端连接到一个数据库服务器,该服务器提供数据库的单一一致的集群范围视图
来自任何数据库服务器的任何数据库更新对于运行在不同主服务器上的任何其他事务都是立即可见的
透明度意味着您不必担心如何在多个数据库服务器内部存储数据
您可以配置Postgres-XC在多台服务器上运行您为每个表选择的数据以分布式方式存储,即分区或复制当发出查询时,Postgres-XC将确定目标数据的存储位置,并向包含目标数据的服务器发出相应的查询

cit us
cit us用内置的高可用性功能(如自动分段和复制)取代PostgreSQLCitus对您的数据库进行分片,并在整个商用节点集群中复制每个分片的多个副本如果群集中的任何节点不可用,Citus会透明地将所有写入或查询重定向到包含受影响的片段副本的另一个节点。
某些功能:
自动逻辑分区内置复制数据中心感知复制灾难恢复查询容错高级负载平衡您可以增加PostgreSQL支持的实时应用程序的正常运行时间,并将硬件故障对性能的影响降至最低您可以使用内置的高可用性工具来实现这一目标,最大限度地减少成本高昂且容易出错的手动干预
PostgresXL
这是一个共享的多主群集解决方案,它透明地在一组节点上分配表,并在这些节点上并行执行查询它还有一个称为全局事务管理器(GTM)的附加组件,用于提供集群的全局一致视图。该项目基于PostgreSQL版本一些公司,如第二象限,为产品提供商业支持。
PostgresXL是一个水平可扩展的开源SQL数据库集群,具有足够的灵活性来处理各种数据库工作负载:
OLTP写密集型工作负载需要MPP并行性业务智能操作数据存储关键价值存储地理空间混合工作负载环境多租户提供商管理的环境组件:
全局事务监视器(GTM):全局事务监视器确保集群范围内的事务一致性协调器:协调器管理用户会话,并与通用技术模型和数据节点交互数据节点:数据节点是存储实际数据的位置结论
有许多其他产品可以为PostgreSQL创建我们的高可用性环境,但是您必须注意以下几点:
新产品、针对没有充分测试的停产项目的有限许可费、非常复杂的实施不安全的解决方案您还必须考虑您的基础架构如果只有一个应用程序服务器,无论您为高可用性配置了多少数据库,如果应用程序服务器出现故障,它都将无法访问。您必须很好地分析基础架构中的单点故障,并尝试解决它们。
牢记这些要点,您可以毫无困难地找到适合您的需求和要求的解决方案,并且可以实施您的高可用性解决方案。来吧,祝你好运!
原文:https://severnines . com/database-blog/Top-pg-clustering-高可用性-ha-solutions-PostgreSql
文章:http://jiagoushi.pro/ Top-pg-clustering-高可用性-ha-solutions-PostgreSql
讨论:请加入知识星球或微信圈[首席建筑师圈]
本文由 在线网速测试 整理编辑,转载请注明出处。