PolarDB在CN里创建了一个库,在DN里生成了若干了以此表名为后缀的若干个子表是什么原理呢?
PolarDB-X 2.0 采用的是可水平扩展的 Share-Nothing 架构,系统基本组成单位是节点(即 Node),每个节点又可分为计算节点(即CN)和数据节点(即DN)两个部分。为提供全局 Binlog 能力,PolarDB-X 2.0 在此基础上增加了 CDC 组件,CDC 是一个具备弹性能力的集群。
全局 Binlog 的生成过程可分为三个阶段:
CDC 组件从每个 DN 拉取其增量日志,也就是物理 Binlog,之后进行单队列排序、内部事件过滤、DDL 相关的整形等操作,以便为下一阶段提供一个“干净”的增量事件队列,同时若系统发生了扩缩容,CDC 组件会在该阶段自动感知并做相关处理;
CDC 组件将所有“干净”的增量事件队列进行合并,期间会对属于同一分布式事务的事件进行合并,并会根据事务时间戳进行全局排序,这样便得到一个全局有序的保障事务完整性的事件队列,同时该阶段还会处理好 DDL 在队列中的位置。之后 CDC 组件会将该队列生成兼容 MySQL Binlog 格式的文件,即全局 Binlog 文件;
CN 组件在收到下游订阅全局 Binlog 请求后,会按照 MySQL DUMP 协议将全局 Binlog 发送给下游消费。
经过上面三个阶段,PolarDB-X 2.0 实现了完全兼容 MySQL Binlog 的全局 Binlog 能力。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about