DM 源码阅读系列文章(五)Binlog replication 实现
作者:lan 本文为 DM 源码阅读系列文章的第五篇。 上篇文章 介绍了 dump 和 load 两个数据同步处理单元的设计实现,对核心 interface 实现、数据导入并发模型、数据导入暂停或中断的恢复进行了分析。 本篇文章将详细地介绍 DM 核心处理单元 Binlog replication,内容包含 binlog 读取、过滤、路由、转换,以及执行等逻辑。 文内涉及到 shard merge 相关逻辑功能,如 column mapping、shard DDL 同步处理,会在 shard merge 篇单独详细讲解,这里就不赘述了。 Binlog replication 处理流程 从上图可以大致了解到 Binlog replication 的逻辑处理流程,对应的 逻辑入口代码 。 从 relay log 或者 MySQL/MariaDB 读取 binlog events。 对 binlog events 进行处理转换(transformation),这里可以做三类操作: 操作 说明 Filter 根据 库/表同步黑白名单 对库/表进行过滤;根据 binlog event 类型过滤 。 Routing 根据 库/表 路由规则 对库/表名进行转换,用于合库合表。 Convert 将 binlog 转换为 job 对象 ,发送到 executor。 executor 对 job