通过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启动成功的示例如下所示。
WORK DIR:/root/tapdata Init tapdata... Download components... Downloading 100.00% 225.48 MB, Total size: 225.48 MB, avg speed: 12.3 MB/s, remaining time: 0m 0s Downloading 100.00% 0.00 KB .Total size: 1.07 KB Downloading 100.00% 0.00 KB .Total size: 0.14 KB organize files... WORK DIR:/root/tapdata Testing JDK... java version:1.8 Java environment OK. The max memory will be used by Tapdata is 1119M Waiting for the flow engine to start \ FlowEngine is startup at : 2022-12-22 14:54 -
步骤三:连接源数据库和目标数据库
通过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、延迟、任务时间统计等信息。