Doris跨集群复制CCR原理详解

CCR架构设计:

1、引入Binlog机制来追踪数据的修改记录,包括MetaBinlog和DataBinlog。
Binlog支持DB/Table的enable和ttl_seconds两种属性。
–DB
alterdatabaseccrsetproperties(“binlog.enable”=“true”);
alterdatabaseccrsetproperties(“binlog.ttls”=“864000”);
–Table
altertablebinlogset(“binlog.enable”=“true”);//开启binlog
altertablebinlogset(“binlog.ttl_seconds”=“864000”);//配置binlog过期时间

2、数据持久化
FE存储的元数据以及BE存储的实际数据,在开启Binlog属性后,FE和BE会将DDL/DML操作的修改记录持久化成MetaBinlog和DataBinlog。
1.在FE发起Publish Transaction的时候,–产生MetaBinlog
BE会执行对应的Publish操作,BE会将这次Transaction涉及Row set的元数据信息写入以rowset_meta为前缀的KV中,并持久化到Meta存储中,
提交后会把导入的SegmentFiles链接到Binlog文件夹下。 --产生DataBinlog

3、数据回放
通过Syncer将源集群的数据和Binlog系列抽取到目标集群上,进行数据回放。
支持了物理文件回放,使用物理文件回放方式,可以有效地重现数据操作流程。 --全量同步
Syncer以FE CommitSeq作为游标,可以获取到下一条提交Commit的Meta Binlog。
Syncer会根据Meta Binlog的信息协调下游的BE去上游BE抽取真实的Binlog文件。
该机制不仅保证了回放数据的一致性,还保证了高效的数据同步性能。
在处理同步时,Syncer在创建任务时优先使用Snapshot级别的Backup/Restore对Doris进行全量的数据恢复,
接下来根据恢复的Snapshot的CommitSeq进行增量数据恢复。 --增量同步

2、清理多余Binlog
FE 端会根据 Binlog 的过期时间定期扫描已经过期的 Binlog,将对应的清理过期请求下发给 BE,而 BE 会根据最后一条的 Commit Seq 对对应的 Tablet 进行元数据和 Rowset Binlog 的清理。在这个过程之中需要关注 DB 和 Table Binlog 的重叠情况。
注意:DB的清理条件优先于Table的清理条件!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值