SDB复制组

复制组

一、原理

复制组副本间通过拷贝和重放事务日志来实现数据同步。

复制组成员

一个复制组由一个或者多个节点组成。复制组内有两种不同的角色:主节点和备节点。正常情况下,一个复制组内有且只有一个主节点,其余为备节点。

主节点

主节点是复制组内唯一接收写操作的成员。当发生写操作时,主节点写入数据,并记录事务日志 replicalog。备节点从主节点异步复制 replicalog,并通过重放 replicalog 来复制数据。

备节点

  • 备节点持有主节点数据的副本,一个复制组可以有多个备节点。
  • 备节点从主节点异步复制 replicalog,并重放 replicalog 来复制数据。复制数据的过程需要一定的时间,有可能经过一段时间才能从备节点上访问到更新后的数据,SequoiaDB 的复制组默认是保证最终一致性。

数据复制

数据复制为复制组中节点之间的同步机制。

增量同步

在数据节点和编目节点中,任何增删改操作均会写入日志。节点会将日志写入日志缓冲区,然后再异步写入本地磁盘。

数据复制在两个节点间进行:

  • 源节点:含有新数据的节点
  • 目标节点:请求进行数据复制的节点

目标节点会选择一个与其数据最接近的节点,然后向它发送一个复制请求。源节点收到复制请求后,会打包目标节点请求的同步点之后的日志,并发送给目标节点。目标节点接收到同步数据包后,会重放事务日志中的操作。

节点之前的复制有两种状态:

  • 对等状态(Peer):目标节点请求的日志,存在于源节点的日志缓冲区
  • 远程追赶状态(Remote Catchup):目标节点请求的日志,不存在于源节点的日志缓冲区中,但存在于源节点的日志文件中

如果目标节点请求的日志,已经不存在于源节点的日志文件中,则目标节点进入全量同步状态。

当两节点处于对等状态时,源节点上可以直接从内存中获取日志。因此目标节点选择源节点时,总会尝试选择距离自己当前日志点最近的节点,使请求的日志尽量落在内存中。所以源节点不一定总是主节点。

全量同步

在复制组内,有些情况下需要进行数据全量同步,才能保障节点之间数据的一致性。以下情况需要进行全量同步:

  • 一个新的节点加入复制组
  • 节点故障导致数据损坏
  • 节点日志远远落后于其他节点,即当前节点的日志已经不存在于其他节点的日志文件中

全量同步在两个节点间进行:

  • 源节点:指含有有效数据的节点,全量同步的源节点必定是主节点
  • 目标节点:指请求进行全量同步的节点,全量同步时,该节点下原有的数据会被废弃

数据复制

数据复制为复制组中节点之间的同步机制。

增量同步

在数据节点和编目节点中,任何增删改操作均会写入日志。节点会将日志写入日志缓冲区,然后再异步写入本地磁盘。

数据复制在两个节点间进行:

  • 源节点:含有新数据的节点
  • 目标节点:请求进行数据复制的节点

目标节点会选择一个与其数据最接近的节点,然后向它发送一个复制请求。源节点收到复制请求后,会打包目标节点请求的同步点之后的日志,并发送给目标节点。目标节点接收到同步数据包后,会重放事务日志中的操作。

节点之前的复制有两种状态:

  • 对等状态(Peer):目标节点请求的日志,存在于源节点的日志缓冲区
  • 远程追赶状态(Remote Catchup):目标节点请求的日志,不存在于源节点的日志缓冲区中,但存在于源节点的日志文件中

如果目标节点请求的日志,已经不存在于源节点的日志文件中,则目标节点进入全量同步状态。

当两节点处于对等状态时,源节点上可以直接从内存中获取日志。因此目标节点选择源节点时,总会尝试选择距离自己当前日志点最近的节点,使请求的日志尽量落在内存中。所以源节点不一定总是主节点。

全量同步

在复制组内,有些情况下需要进行数据全量同步,才能保障节点之间数据的一致性。以下情况需要进行全量同步:

  • 一个新的节点加入复制组
  • 节点故障导致数据损坏
  • 节点日志远远落后于其他节点,即当前节点的日志已经不存在于其他节点的日志文件中

全量同步在两个节点间进行:

  • 源节点:指含有有效数据的节点,全量同步的源节点必定是主节点
  • 目标节点:指请求进行全量同步的节点,全量同步时,该节点下原有的数据会被废弃
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值