数据上云又称数据采集,数据集成,数据迁移,是大数据架构中的最基础也是最根本的一环,从性质上来讲属于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。
了解数据上云中全量表、增量表等概念。