更多精彩内容,欢迎观看:
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——二、数据导入导出与同步链路搭建(上):https://developer.aliyun.com/article/1222976?spm=a2c6h.12873581.technical-group.dArticle1222976.7f81b096nfeL5J
3) DML外表式数据导入导出-MaxCompute
操作步骤
• 确定目标和源表:MaxCompute/AnalyticDB数据表
• 创建映射表:在AnalyticDB中创建该数据表的映射表
• DML命令导出:INSERT(OVERWRITE)INTO
外部表主要参数
ENGINE='ODPS' ---存储引擎是 MaxCompute TABLE_PROPERTIES=’{ "endpoint": "http://service.cn.maxcompute.aliyun-inc.com/api" ---MaxCompute 的 EndPoint (域名节点) "accessid": "LTAIF***5FSE", ---访问 MaxCompute 的 AccessKey ID "accesskey": "Ccw***iWjv", ---对应的 ID 的 Access key Secret "project name": "odps_project1", ---MaxCompute 中的工作空间名称 "tablename": "xxx_xxx" ---MaxCompute 中的数据表名称 }'
说明
目前仅支持AnalyticDB MySQL通过MaxCompute的VPC网络Endpoint访问MaxCompute。
4) DML外表式数据导入导出-OSS
操作步骤
• 确定目标和源表:
ü OSS:是文件形式存储,将数据加载到ADB中
ü AnalyticDB:也可以将ADB表中的数据导出到OSS文件中
• 创建映射表:AnalyticDB中创建该数据表的映射表
• DML命令导出:INSERT(OVERWRITE)INTO
外部表主要参数
ENGINE='OSS' ---存储引擎是 OSS TABLEPROPERTES='{ "endpoint": "oss-cn-xxxxxx-internal.aliyuncs.com", ---OSS 的 EndPoint (域名节点) "ur" /bucket-name/xxx/ --OSS 中文件夹的地址,以/结尾 "accessid": "LTAlF****5FSE", ---访问 OSS 文件的 Access Key ID "accesskey": "CCW**iWjV", ---访问 OSS 文件的 Access Key Secret "delimiter": ";" ---定义 OSS 中数据文件的列分隔符 }'
说明
OSS与AnalyticDB MySQL所属Region相同,不能跨Region导入导出。
4. 数据同步
1) RDS到ADB同步链路整体介绍
数据导入导出是一次性的、不能实时观察到元数据的改变,可以通过DTS数据传输服务搭建同步链路,实现对数据源实时数据改变的感知。
• DTS:数据传输服务(Data Transmission Service),支持关系型数据库、NoSQL及大数据(OLAP)等数据源间的数据传输。
• 可通过DTS同步多种数据源数据到AnalyticDB MySQL(下文简称ADB),数据源包括RDS MySQL、PolarDB MySQL、PolarDB-X等,实现交互式BI分析和数仓迁移。
• 本教程重点介绍RDS MySQL到ADB的同步流程,其他数据源同步流程类似。
2) 数据同步步骤
数据同步由结构初始化、全量同步、增量同步三个步骤组成。
如图,数据存在RDS MySQL中,数据需要先在AnalyticDB MySQL中完成RDS MySQL的结构初始化,然后将RDS MySQL中全量数据同步到AnalyticDB MySQL中,最后通过增量同步保证数据的完整一致性。
a) 结构初始化
结构初始化是同步的第一个环节,即在ADB端创建与源MySQL对应的表结构。
• 首先,确认MySQL和ADB间的表结构关系。
• 然后,根据配置的表结构信息,DTS会自动在ADB端创建表,指定表的主键列和分布列,DTS会根据这些信息,加上其他列的信息,在AnalyticDB MySQL端建表。
• 分布列是AnalyticDB MySQL的表结构属性,ADB会根据该列把数据在多个节点上进行分布式存储。
• 注意,源端必须存在主键列,否则无法正确同步数据。
b) 全量同步
• 在结构初始化后,DTS会进行全量同步,然后在此基础上,再基于BinLog进行增量同步。
• 全量同步的方法是基于主键划分区间,然后并行同步到ADB中,可以简单理解为按主键范围把数据从MySQL中查询出来,并写入到ADB中,这样可以实现高效的并行写,加快全量同步性能。
• 为什么需要全量同步?
MySQL中存在大量历史数据,这些数据对应的BinLog或许已经被删除,无法通过重放BinLog来同步这部分数据。
同时,并行、批量拉取数据并写入ADB,效率也比逐行解析BinLog要高。
c) 增量同步
完成结构初始化和全量同步,则进入增量同步阶段。
• 首先,MySQL端的修改会产生BinLog,DTS通过捕获并解析MySQL端的BinLog日志,转换为Insert/Update/Delete/Alter等语句,并在ADB端回放这些操作,实现MySQL到ADB的增量同步。
• 结构初始化、全量同步都是一次性的,增量同步则是持续的,只要MySQL端有变化,DTS就会捕获并同步到ADB端。