通过Tapdata Cloud的可视化界面,您可以将自建MySQL、阿里云RDS MySQL、第三方云数据库的数据实时同步到表格存储。
前提条件
使用Tapdata Cloud同步MySQL数据到表格存储前,需要完成如下准备工作。
- 已注册Tapdata Cloud账号。 
- 已创建RAM用户,并授予RAM用户管理表格存储服务的权限(AliyunOTSFullAccess)。具体操作,请参见使用RAM用户访问密钥访问表格存储。 
背景信息
Tapdata Cloud是由Tapdata提供的集数据复制、数据开发为一体的实时数据服务,能够在跨云、跨地域、多类型数据源的场景下,提供毫秒级的实时数据同步服务和数据融合服务。更多信息,请参见什么是Tapdata。
注意事项
当前支持MySQL 5.0、5.1、5.5、5.6、5.7、8.x版本的数据同步。
使用流程
使用Tapdata Cloud将MySQL数据同步到表格存储的使用流程如下:
- 配置MySQL数据库和授权账号。具体操作,请参见步骤一:配置MySQL数据库和授权账号。 
- 在MySQL数据库所属机器或相同网络的机器上部署Tapdata Agent。具体操作,请参见步骤二:部署Tapdata Agent。 - Tapdata Agent(简称Agent)是数据同步、数据异构、数据开发场景中的关键程序,通过流式技术从源端获取数据、处理转换数据并发送到目标端。 重要- Agent通过流式技术从源端获取数据、处理转换数据并发送到目标端,数据不会流经 Tapdata Cloud,也不会上传和留存您的数据。 
- 使用Tapdata Cloud连接源数据库和目标数据库。具体操作,请参见步骤三:连接源数据库和目标数据库。 
- 创建数据复制任务用于进行源数据库到目标数据库的数据复制。具体操作,请参见步骤四:配置数据复制任务。 
步骤一:配置MySQL数据库和授权账号
同步MySQL数据库的数据前,您需要为MySQL数据复制任务创建一个数据库账号。 为了实现增量数据同步,请为数据库开启Binlog。
- 登录MySQL数据库。 
- 根据所用数据库版本执行相应命令创建数据库账号。 - 当数据库为MySQL 5.0、5.1、5.5、5.6、5.7版本时,请执行如下命令: - CREATE USER 'username'@'host' IDENTIFIED BY 'password';
- 当数据库为MySQL 8.x版本时,请执行如下命令: - CREATE USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
 - 命令中的配置项说明请参见下表。 - 配置项 - 示例 - 说明 - username - tapdatamysql - 数据库的用户名。 - password - Tap********** - 数据库的密码。 - host - % - 允许使用该账号登录的主机。设置为百分号(%)表示允许任意主机。 
- 为刚创建的数据库账号授予权限。 - 实际使用时,建议基于业务需求设置更精细化的权限控制。此处以授予指定库SELECT权限以及授予全局权限为例介绍。 - 授予指定库SELECT权限 - GRANT SELECT, SHOW VIEW, CREATE ROUTINE, LOCK TABLES ON database_name.table_name TO 'username' IDENTIFIED BY 'password';
- 授予全局权限 - GRANT RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'username' IDENTIFIED BY 'password';
 - 命令中的配置项说明请参见下表。 - 配置项 - 示例 - 说明 - database_name.table_name - datademo.userinfo - 要授予权限的数据库和表。 - username - tapdatamysql - 数据库的用户名。 - password - Tap********** - 数据库的密码。 
- 为了读取MySQL数据库的增量数据,请为数据库开启Binlog。 - 执行vim命令修改 - $MYSQL_HOME/mysql.cnf中的配置。配置示例如下:- server_id = 112233 log_bin = mysql-binlog expire_logs_days = 1 binlog_format = row binlog_row_image = full- 配置项说明请参见下表。 - 配置项 - 示例 - 说明 - server_id - 112233 - 用于标识MySQL中的服务器或者复制客户端。数据库中服务器和复制客户端的server_id必须唯一。取值范围为大于0的整数。 - log_bin - mysql-binlog - Binlog序列文件的基本名称。 - expire_logs_days - 1 - 二进制日志文件保留的天数。系统会自动删除到期的二进制日志文件。 - binlog_format - row - 二进制日志的格式,请设置为row。 - binlog_row_image - full - 对MySQL基于行复制时,行映像写入二进制日志中的方式,请设置为full,表示记录行中的所有列。 
- 修改完成后,执行如下命令重启MySQL进程。 - /etc/init.d/mysqld restart
- 登录MySQL数据库后,执行如下命令确认Binlog配置已生效,即format的取值为ROW。 - SHOW VARIABLES LIKE 'binlog_format';- 返回示例如下: - +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ 1 row in set (0.00 sec)
 
步骤二:部署Tapdata Agent
待部署Agent的机器必须能够访问互联网。
由于数据流转通常对时效性有较高的要求,因此,推荐将Tapdata Agent部署在MySQL数据库所属机器或相同网络的机器中,可极大降低网络延迟带来的影响。
此处以Linux操作系统(64位)为例介绍Agent部署流程,如果需要部署到其他平台(例如Windows、阿里云计算巢),请参见安装Agent文档。
- 在左侧导航栏,单击Agent管理。 
- 在Agent管理页面,单击创建Agent。 
- 在Agent下载与安装对话框,选择Linux(64 bit),然后根据界面提示进行Agent安装。 重要- 安装前请确认您的部署环境中已安装JAVA 1.8版本并正确配置环境变量。 - 登录到待部署Agent的机器。 
- 执行如下命令创建tapdata目录用于安装和部署Tapdata Agent。 - mkdir tapdata
- 单击界面中的复制,复制步骤3的命令,并在tapdata目录下执行命令。 说明- 执行该命令后,Tapdata Agent会自动下载、自动部署以及启动。 
 - 等待命令执行完成,即可完成Tapdata Agent的安装和启动。 - Tapdata Agent启动成功的示例如下图所示。  
步骤三:连接源数据库和目标数据库
通过Tapdata Cloud连接源数据库和目标数据库。
- 在左侧导航栏,单击连接管理。 
- 连接作为源库的MySQL数据库。 - 在连接管理页面,单击创建连接。 
- 在创建连接对话框的认证数据源页签,单击Mysql。 
- 在创建连接页面,根据下表说明配置数据源参数。 - 参数 - 描述 - 连接名称 - 数据连接名称,请根据实际设置。多个连接的名称不能相同。 - 连接类型 - 支持将MySQL作为源库或目标库。可取值为源头和目标或者源头。 - 地址 - 数据库连接地址。 - 端口 - 数据库的服务端口。 - 数据库 - 数据库名称,即一个连接对应一个数据库。 说明- 如果有多个数据库,则需要创建多个数据连接。 - 账号 - 数据库的账号。 - 密码 - 数据库的密码。 - 高级设置 - 连接参数 - 额外的连接参数,默认为空。 - 时区 - 默认为数据库所用的时区,您也可以根据业务需求指定。 - 如果源库为默认数据库时区(+8:00),目标端数据库为指定时区(+0:00),假设源端数据库存储的时间为 - 2020-01-01 16:00:00,则目标端数据库存储的时间为- 2020-01-01 08:00:00。- 包含表 - 要包含的表。取值范围如下: - 全部(默认):包含数据库中的所有表。 
- 自定义:自定义要包含的表。多个表或者表达式之间用半角逗号(,)分隔。表达式支持使用星号(*)表示任意长度的字符。 
 - 排除表 - 从包含表规则匹配到的表中将指定的表排除。 - 打开排除表开关,设置要排除的表。多个表或者表达式之间用半角逗号(,)分隔。表达式支持使用星号(*)表示任意长度的字符。 - agent设置 - 使用的Agent信息。取值范围如下: - 平台自动分配(默认):由平台分配节点进行连接访问。 
- 用户手动指定:设置此参数为用户手动指定后,选择要使用的Agent。 
 - 模型加载时间 - 数据源中模型数量大于1万时,Tapdata Cloud会按此参数设置的时间定期进行模型刷新。 
- 单击连接测试,测试通过后单击保存。 说明- 如果提示连接测试失败,请根据页面提示进行修复。 
 
- 连接作为目标库的表格存储。 - 在连接管理页面,单击创建连接。 
- 在创建连接对话框的Beta数据源页签,单击Tablestore。 
- 在创建连接页面,根据下表说明配置数据源参数。 - 参数 - 描述 - 连接名称 - 数据连接名称,请根据实际设置。 - 连接类型 - 固定取值为目标。此数据连接在Tapdata Cloud中只能作为目标使用,不能作为源头。 - 服务地址 - 表格存储实例的服务地址。更多信息,请参见服务地址。 - 实例名称 - 表格存储实例的名称。更多信息,请参见实例。 - AccessKey ID - RAM用户的AccessKey ID和AccessKey Secret。 说明- 当使用从STS获取的临时访问凭证访问表格存储时,请设置为临时访问凭证的AccessKey ID和AccessKey Secret。 - AccessKey Secret - AccessKey Token - 临时访问令牌。当使用从STS获取的临时访问凭证访问表格存储时,需要设置此参数。 - agent设置 - 使用的Agent信息。取值范围如下: - 平台自动分配(默认):由平台分配节点进行连接访问。 
- 用户手动指定:设置此参数为用户手动指定后,选择要使用的Agent。 
 - 模型加载频率 - 数据源中模型数量大于1万时,Tapdata Cloud会按此参数设置定期进行模型刷新。 
- 单击连接测试,测试通过后单击保存。 说明- 如果提示连接测试失败,请根据页面提示进行修复。 
 
步骤四:配置数据复制任务
通过配置数据复制任务,可以实现同构或者异构数据源间的实时同步,适用于数据迁移、数据同步、数据灾备、读性能扩展等多种业务场景。
- 在左侧导航栏,单击数据复制。 
- 在数据复制页面,单击创建。 
- 在页面左侧,将MySQL和表格存储数据库拖拽到右侧画布中,然后将其连接起来。 
- 单击MySQL数据库,在右侧面板根据下表说明配置参数。 - 参数 - 描述 - 节点名称 - 默认为连接名称,请根据实际设置。 - DDL事件采集 - 暂不支持对表格存储执行DDL语句同步,无需配置此参数。 - 选择表 - 选择要复制的表。取值范围如下: - 按表名选择:按照表名选择待复制的表。 - 在待复制表区域选中表,然后单击  图标完成设置。 图标完成设置。- 您也可以单击批量选表,输入多个表名来批量选择要复制的表。多个表名之间用半角逗号(,)分隔。 
- 按正则表达式匹配:使用正则表达式匹配满足表达式的表作为要复制的表。 - 使用此方式时,当源库中新增的表满足表达式时,该表也会被自动同步到目标库。 
 - 批量读取条数 - 全量同步时,每批次读取的记录条数,默认为100。 
- 单击Tablestore数据库,预览数据结构并设置高级选项。 - 参数 - 描述 - 节点名称 - 默认为连接名称,请根据实际设置。 - 推演结果 - 查看表的数据结构(例如字段名称、字段类型)以及根据需要设置字段类型。 说明- 如需调整字段类型,单击目标字段类型中的  图标,然后在弹出的对话框中完成设置。 图标,然后在弹出的对话框中完成设置。
- 由于Tablestore单个表的列数量不可超过32个,如果MySQL中待同步表的列数量超过32,您可以在页面左侧拖拽一个字段编辑节点进来,将其作为MySQL和Tablestore的中间节点连接起来,然后在字段编辑节点中屏蔽与业务无关的列以满足需求, 
 - 高级设置 - 重复处理策略 - 当目标表已存在时的处理策略,默认为保持目标端原有结构及数据。如果目标表没有数据且结构和源表不一致,可选择为清除目标表原有表结构及数据。 - 数据写入模式 - 数据写入表格存储的处理方式。取值范围如下: - 按事件类型处理:根据插入事件、更新事件和删除事件分别设置数据写入策略。 
- 追加写入:只处理插入事件,丢弃更新事件和删除事件。 
 - 数据写入策略 - 按照事件类型处理数据写入时的策略。当数据写入模式选择为按事件类型处理时才能设置此参数。 - 处理插入事件的策略为目标存在时更新,处理更新事件和删除事件的策略为不存在时丢弃。 - 全量多线程写入 - 全量数据写入的并发线程数,默认值为8,可基于目标端写性能适当调整。 - 增量写入线程数 - 增量数据写入的并发线程数,默认未启用。打开增量写入线程数开关后可基于目标端写性能适当调整。 
- 可选:单击上方的  图标,请根据下表说明配置任务属性。 图标,请根据下表说明配置任务属性。- 参数 - 描述 - 任务名称 - 同步任务的名称,请根据实际设置。 - 同步类型 - 数据同步的类型。取值范围如下: - 全量+增量:全量数据同步完成后,再同步增量数据。 
- 全量:将源端的存量数据复制到目标端。 
- 增量:将源端实时产生的新数据或数据变更复制到目标端。 
 - 任务描述 - 任务的描述信息。 - 高级设置 - 计划开始时间 - 任务的计划开始时间。 - 如果需要指定任务开始时间,打开计划开始时间开关后,选择开始的日期和时间。 - 数据校验 - 打开数据校验开关后,任务会自动对同步结果的一致性进行全量校验和增量校验,并会在运行监控页面展示校验不一致的数据行数。 重要- 当任务符合以下任意一种情况时,即使打开数据校验开关,任务也不会进行校验。 - 添加了中间处理节点。 
- 源连接不支持校验。 
- 目标连接不支持校验。 
 - 增量同步并发写入 - 打开增量同步并发写入开关后,增量同步时,源端数据会并发写入目标端。 - 增量滞后判断时间设置 - 用于快速判断复制任务是否存在滞后。 - 打开增量滞后判断时间设置开关并设置判断时间。增量同步时,如果增量同步的滞后时间大于设置的判断时间,则复制任务存在滞后。 - 默认值为1,单位为秒。 - 处理器线程数 - 处理器的线程数。 - 增量数据处理模式 - 增量同步时,增量数据的处理模式。取值范围为批量、逐条。 - agent设置 - 使用的Agent信息。取值范围如下: - 平台自动分配(默认):由平台分配节点进行连接访问。 
- 用户手动指定:设置此参数为用户手动指定后,选择要使用的Agent。 
 
- 确认无误后,单击启动。 - 操作完成后,您可以查看任务的执行情况,例如QPS、延迟、任务时间统计等信息。