很多应用场景下, 除了收集数据库全量数据外, 还希望只获取增量数据. 例如, MySQL 某个表从某个时刻开始修改, 插入或删除的数据. 在这种情况下, CDC(Change
Data Capture) 系统应运而生. 本文将介绍数据增量收集 CDC 系统应用场景分析以及 Canal 应用步骤.
CDC 系统主要功能是捕获数据库中的数据更新, 将增量数据发送给各个订阅者和消费者. CDC 系统应用非常广泛, 具体应用场景可描述为如下图所示:
CDC 应用场景
应用场景主要包括:
(1) 异地机房同步. 实现数据异地机房容灾.
(2) 数据库实时备份. 类似于 master/slave 架构, 实时对数据库进行备份.
(3) 业务 Cache 刷新. 更新数据库成功的同时, 刷新 Cache 的值.
(4) 数据全库迁移. 创建任务对列表, 逐步完成全库所有表的迁移.
CDC 系统开源实现的典型系统是 Canal.Canal 的主要定位是基于数据库增量日志解析, 提供增量数据订阅和消费, 目前主要支持了 MySQL 关系数据库.
Canal 的主要原理是, 模拟数据库的主备复制协议, 接收主数据库产生的 binary log, 进而捕获更新数据, 以 MySQL 为例说明, 具体步骤如下:
步骤 1:Canal 实现 MySQL 主备复制协议, 向 MySQL Server 发送 dump 协议.
步骤 2:MySQL 收到 dump 请求, 开始推送 binlog 给 Canal.
步骤 3:Canal 解析 binlog 对象, 并发送给各个消费者.
来源: http://www.jianshu.com/p/6896f3672973