为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号

请选择:

请选择咨询类型

AnyShare
AnyBackUp
AnyRobot

扫码关注

爱数技术支持中心公众号

contact us

提交成功!

我们将在 24 小时之内联系你。

性能爆表
AnyShare
如何购买
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询

爱数博客

全部 AnyBackup AnyShare AnyRobot AnyDATA AnyFabric

AnyShare Family 7 MariaDB集群模式介绍

2022-09-08 1318 0
Galera Cluster是基于MySQL/innodb二次开发而成的一个支持"多主同步"的数据库主从集群,Proton RDS MariaDB采用了MariaDB Galera Cluster同步技术。下面给大家带来MariaDB集群模式的详细介绍。

一、技术优势

一、同步复制,节点间数据是同步的,而Master/Slave模式是异步的,因此具有较高的性能和可靠性;
二、multi-master,集群中每个节点都可读可写;
三、自动的节点成员控制,自动剔除故障节点; 
四、 新节点加入数据自动复制; 
五、 真正的并行复制,基于行级;  
六、用户可以直接连接集群,使用感受上与MySQL完全一致。

Galera replication具有实时性,能够保障不同节点的数据视图在较小的时间范围内是一致的。MySQL原生replication方案slave中的SQL线程和IO线程是分离的,即便使用半同步甚至同步复制,也可能因为SQL线程的速度跟不上IO线程而导致slave数据落后很多,当然5.7引入并行复制后会好很多,而Galera中除了具有并行复制的功能外,还具有flow control的功能来控制节点间数据同步的速度。

二、内部逻辑


etcd容器:存储数据库seqno信息。数据库启动时需要决定引导节点,通过向etcd注册seqno值,选取最大的节点作为引导节点启动;
DB容器:数据库容器。数据库与数据库之间组成Galera集群实现数据同步;
MGMT容器:API容器,对外提供数据库/数据库账户管理功能;
exporter容器:数据库监控数据获取http服务,供Proton Watch组件采集metrics数据。

三、复制架构

数据同步使用同步复制(Eager Replication),集群中的节点经过更新单个事务来与集群中的节点进行同步,这意味着当事务进行提交时,全部节点都具备相同的值。

主要有如下几个组件组成:
DBMS:Database Management System,即咱们常见的数据库,Galera Cluster支持MySQL、MariaDB和Percona XtraDB。
wsrep API:写集复制功能组件,负责提供关系型数据库管理、复制服务,提供接口。
Galera Replication Plugin:启用写集复制功能的插件。
Group Communication plugins:Galera Clsuter集群中各类群组通讯系统,例如gcomm和Spread。

四、复制原理

Galera集群的复制功能是基于认证的复制,其流程如下:

Process过程:本地节点收到客户端请求后执行请求,提交事务前所有对数据库的更改都会被写集收集起来,并且将写集发送到其它节点;
Certification过程:写集将在每个节点上使用搜索到的主键进行确认性认证测试,测试结果决定着节点是否应用写集更改数据。如果认证测试失败,节点将丢弃写集 ;如果认证测试成功,则事务提交。

当客户端发出commit命令时,在实际提交之前,对数据库所做的更改都将被收集到一个写集中,写集中包含事务信息和所更改行的主键。然后,数据库将此写集发送到所有其它节点。节点用写集中的主键与当前节点中未完成事务的所有写集(不仅包括当前节点其它事务产生的写集,还包括其它节点传送过来的写集)的主键相比较,确定节点是否可以提交事务。同时满足以下三个条件则验证失败(存在冲突):

  1. 两个事务来源于不同节点。
  2. 两个事务包含相同的主键。
  3. 老事务对新事务不可见,即老事务未提交完成。新老事务的划定依赖于全局事务总序,即GTID。

验证失败后,节点将删除写集,集群将回滚原始事务。对于所有的节点都是如此,每个节点单独进行验证。因为所有节点都以相同的顺序接收事务,它们对事务的结果都会做出相同的决定,要么全成功,要么都失败。成功后自然就提交了,所有的节点又会重新达到数据一致的状态。节点之间不交换“是否冲突”的信息,各个节点独立异步处理事务。由此可见,Galera本身的数据也不是严格同步的,很明显在每个节点上的验证是异步的。最后,启动事务的节点可以通知客户端应用程序是否提交了事务。

五、数据复制方式

将集群中的数据复制到某个节点上实现备份,或者节点新加入集群须要同步数据。
Galera Cluster有两种数据复制方式:

  • State Snapshot Transfers (SST):全量同步
  • Incremental State Transfers (IST):增量同步

简单来说。SST就是同步整个数据库,IST是同步一个库与另外一个库相差的部分事务。


新加入的节点叫做Joiner,给Joiner提供复制的节点叫Donor。在该过程中首先会检查本地grastate.dat文件的seqno事务号是否在远端donor节点galera.cache文件里,如果存在,那么进行增量同步复制,将剩余的事务发送过去;如果不存在那么进行全量同步复制。

六、原理对比

最后,将Galera复制的原理与实现与MySQL组复制进行类比,如下表所示:

请就本文对您的益处进行评级:

标签

产品技术

相关文章

热门标签

版本发布 在线教学
ai-assistant
chat
support
trial
需求助手 (内容由 AI 大模型生成,请仔细甄别)