数据上云又称数据采集,数据集成,数据迁移,是大数据架构中的最基础也是最根本的一环,从性质上来讲属于ETL中的一部分操作,即把数据从一个地方迁移汇总到另外一个地方。数据上云解决了信息孤岛问题,解决了信息不对称问题,即”车同轨书同文“,同时把数据迁移到云计算平台,对后续数据的计算和应用提供了第一步开山之路。

本教程主要介绍数据上云相关场景的操作:

  • 实时数据同步:使用CANAL进行实时数据同步,链路为MySQL-->CANAL-->DataHub-->MaxCompute。
  • 离线数据同步:分为全量与增量数据两种方式。

实验目标

跑通利用CANAL实现数据实时同步的链路,环境中MySQL canal_demo库下有一张student表,我们对student表进行增删改的操作,最终会落地到MaxCompute的ods_student_canal_sink表中。

实现增量与全量数据的上云操作。

背景知识

  • MySQL binlog介绍

MySQL 的二进制日志 binlog 可以说是 MySQL 最重要的日志,它记录了所有的 DDL 和 DML 语句(除了数据查询语句select、show等),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。binlog 的主要目的是复制和恢复。

Binlog日志的两个最重要的使用场景:

  • MySQL主从复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves来达到master-slave数据一致的目的
  • 数据恢复:通过使用 mysqlbinlog工具来使恢复数据
  • CANAL工具介绍

canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。

基于日志增量订阅和消费的业务包括:

  • 数据库镜像
  • 数据库实时备份
  • 索引构建和实时维护(拆分异构索引、倒排索引等)
  • 业务 cache 刷新
  • 带业务逻辑的增量数据处理

当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。

工作原理

  • MySQL主备复制原理。

MySQL master将数据变更写入二进制日志(binary log, 其中记录叫做二进制日志事件binary log events,可以通过show binlog events 进行查看)。MySQL slave将master的binary log events拷贝到它的中继日志(relay log)。MySQL slave重放relay log中事件,将数据变更反映它自己的数据。

  • canal工作原理。

canal模拟MySQL slave的交互协议,伪装自己为MySQL slave,向MySQL master发送dump协议。MySQL master收到dump请求,开始推送binary log给slave(即canal)。canal解析 binary log 对象(原始为 byte 流)

前置知识

了解基本数据库知识、熟悉基本SQL语句编写。

了解阿里云MaxCompute、DataWorks。

了解数据上云中全量表、增量表等概念。