使用Tapdata Cloud导入MySQL数据

通过Tapdata Cloud的可视化界面,您可以将自建MySQL、阿里云RDS MySQL、第三方云数据库的数据实时同步到表格存储。

前提条件

使用Tapdata Cloud同步MySQL数据到表格存储前,需要完成如下准备工作。

背景信息

Tapdata Cloud是由Tapdata提供的集数据复制、数据开发为一体的实时数据服务,能够在跨云、跨地域、多类型数据源的场景下,提供毫秒级的实时数据同步服务和数据融合服务。更多信息,请参见什么是Tapdata

注意事项

当前支持MySQL 5.0、5.1、5.5、5.6、5.7、8.x版本的数据同步。

使用流程

使用Tapdata CloudMySQL数据同步到表格存储的使用流程如下:

  1. 配置MySQL数据库和授权账号。具体操作,请参见步骤一:配置MySQL数据库和授权账号

  2. MySQL数据库所属机器或相同网络的机器上部署Tapdata Agent。具体操作,请参见步骤二:部署Tapdata Agent

    Tapdata Agent(简称Agent)是数据同步、数据异构、数据开发场景中的关键程序,通过流式技术从源端获取数据、处理转换数据并发送到目标端。

    重要

    Agent通过流式技术从源端获取数据、处理转换数据并发送到目标端,数据不会流经 Tapdata Cloud,也不会上传和留存您的数据。

  3. 使用Tapdata Cloud连接源数据库和目标数据库。具体操作,请参见步骤三:连接源数据库和目标数据库

  4. 创建数据复制任务用于进行源数据库到目标数据库的数据复制。具体操作,请参见步骤四:配置数据复制任务

步骤一:配置MySQL数据库和授权账号

同步MySQL数据库的数据前,您需要为MySQL数据复制任务创建一个数据库账号。 为了实现增量数据同步,请为数据库开启Binlog。

  1. 登录MySQL数据库。

  2. 根据所用数据库版本执行相应命令创建数据库账号。

    • 当数据库为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

    %

    允许使用该账号登录的主机。设置为百分号(%)表示允许任意主机。

  3. 为刚创建的数据库账号授予权限。

    实际使用时,建议基于业务需求设置更精细化的权限控制。此处以授予指定库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**********

    数据库的密码。

  4. 为了读取MySQL数据库的增量数据,请为数据库开启Binlog。

    1. 执行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,表示记录行中的所有列。

    2. 修改完成后,执行如下命令重启MySQL进程。

      /etc/init.d/mysqld restart
    3. 登录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文档。

  1. 登录Tapdata Cloud平台

  2. 在左侧导航栏,单击Agent管理

  3. Agent管理页面,单击创建Agent

  4. Agent下载与安装对话框,选择Linux(64 bit),然后根据界面提示进行Agent安装。

    重要

    安装前请确认您的部署环境中已安装JAVA 1.8版本并正确配置环境变量。

    1. 登录到待部署Agent的机器。

    2. 执行如下命令创建tapdata目录用于安装和部署Tapdata Agent。

      mkdir tapdata
    3. 单击界面中的复制,复制步骤3的命令,并在tapdata目录下执行命令。

      说明

      执行该命令后,Tapdata Agent会自动下载、自动部署以及启动。

    等待命令执行完成,即可完成Tapdata Agent的安装和启动。

    Tapdata Agent启动成功的示例如下图所示。

    fig_tapdataagent

步骤三:连接源数据库和目标数据库

通过Tapdata Cloud连接源数据库和目标数据库。

  1. 登录Tapdata Cloud平台

  2. 在左侧导航栏,单击连接管理

  3. 连接作为源库的MySQL数据库。

    1. 连接管理页面,单击创建连接

    2. 创建连接对话框的认证数据源页签,单击Mysql

    3. 创建连接页面,根据下表说明配置数据源参数。

      参数

      描述

      连接名称

      数据连接名称,请根据实际设置。多个连接的名称不能相同。

      连接类型

      支持将MySQL作为源库或目标库。可取值为源头和目标或者源头

      地址

      数据库连接地址。

      端口

      数据库的服务端口。

      数据库

      数据库名称,即一个连接对应一个数据库。

      说明

      如果有多个数据库,则需要创建多个数据连接。

      账号

      数据库的账号。

      密码

      数据库的密码。

      高级设置

      连接参数

      额外的连接参数,默认为空。

      时区

      默认为数据库所用的时区,您也可以根据业务需求指定。

      如果源库为默认数据库时区(+8:00),目标端数据库为指定时区(+0:00),假设源端数据库存储的时间为2020-01-01 16:00:00,则目标端数据库存储的时间为2020-01-01 08:00:00

      包含表

      要包含的表。取值范围如下:

      • 全部(默认):包含数据库中的所有表。

      • 自定义:自定义要包含的表。多个表或者表达式之间用半角逗号(,)分隔。表达式支持使用星号(*)表示任意长度的字符。

      排除表

      从包含表规则匹配到的表中将指定的表排除。

      打开排除表开关,设置要排除的表。多个表或者表达式之间用半角逗号(,)分隔。表达式支持使用星号(*)表示任意长度的字符。

      agent设置

      使用的Agent信息。取值范围如下:

      • 平台自动分配(默认):由平台分配节点进行连接访问。

      • 用户手动指定:设置此参数为用户手动指定后,选择要使用的Agent。

      模型加载时间

      数据源中模型数量大于1万时,Tapdata Cloud会按此参数设置的时间定期进行模型刷新。

    4. 单击连接测试,测试通过后单击保存

      说明

      如果提示连接测试失败,请根据页面提示进行修复。

  4. 连接作为目标库的表格存储。

    1. 连接管理页面,单击创建连接

    2. 创建连接对话框的Beta数据源页签,单击Tablestore

    3. 创建连接页面,根据下表说明配置数据源参数。

      参数

      描述

      连接名称

      数据连接名称,请根据实际设置。

      连接类型

      固定取值为目标。此数据连接在Tapdata Cloud中只能作为目标使用,不能作为源头。

      服务地址

      表格存储实例的服务地址。更多信息,请参见服务地址

      实例名称

      表格存储实例的名称。更多信息,请参见实例

      AccessKey ID

      RAM用户的AccessKey IDAccessKey Secret。

      说明

      当使用从STS获取的临时访问凭证访问表格存储时,请设置为临时访问凭证的AccessKey IDAccessKey Secret。

      AccessKey Secret

      AccessKey Token

      临时访问令牌。当使用从STS获取的临时访问凭证访问表格存储时,需要设置此参数。

      agent设置

      使用的Agent信息。取值范围如下:

      • 平台自动分配(默认):由平台分配节点进行连接访问。

      • 用户手动指定:设置此参数为用户手动指定后,选择要使用的Agent。

      模型加载频率

      数据源中模型数量大于1万时,Tapdata Cloud会按此参数设置定期进行模型刷新。

    4. 单击连接测试,测试通过后单击保存

      说明

      如果提示连接测试失败,请根据页面提示进行修复。

步骤四:配置数据复制任务

通过配置数据复制任务,可以实现同构或者异构数据源间的实时同步,适用于数据迁移、数据同步、数据灾备、读性能扩展等多种业务场景。

  1. 登录Tapdata Cloud平台

  2. 在左侧导航栏,单击数据复制

  3. 数据复制页面,单击创建

  4. 在页面左侧,将MySQL和表格存储数据库拖拽到右侧画布中,然后将其连接起来。

  5. 单击MySQL数据库,在右侧面板根据下表说明配置参数。

    参数

    描述

    节点名称

    默认为连接名称,请根据实际设置。

    DDL事件采集

    暂不支持对表格存储执行DDL语句同步,无需配置此参数。

    选择表

    选择要复制的表。取值范围如下:

    • 按表名选择:按照表名选择待复制的表。

      待复制表区域选中表,然后单击fig_row图标完成设置。

      您也可以单击批量选表,输入多个表名来批量选择要复制的表。多个表名之间用半角逗号(,)分隔。

    • 按正则表达式匹配:使用正则表达式匹配满足表达式的表作为要复制的表。

      使用此方式时,当源库中新增的表满足表达式时,该表也会被自动同步到目标库。

    批量读取条数

    全量同步时,每批次读取的记录条数,默认为100。

  6. 单击Tablestore数据库,预览数据结构并设置高级选项。

    参数

    描述

    节点名称

    默认为连接名称,请根据实际设置。

    推演结果

    查看表的数据结构(例如字段名称、字段类型)以及根据需要设置字段类型。

    说明
    • 如需调整字段类型,单击目标字段类型中的fig_down图标,然后在弹出的对话框中完成设置。

    • 由于Tablestore单个表的列数量不可超过32个,如果MySQL中待同步表的列数量超过32,您可以在页面左侧拖拽一个字段编辑节点进来,将其作为MySQLTablestore的中间节点连接起来,然后在字段编辑节点中屏蔽与业务无关的列以满足需求,

    高级设置

    重复处理策略

    当目标表已存在时的处理策略,默认为保持目标端原有结构及数据。如果目标表没有数据且结构和源表不一致,可选择为清除目标表原有表结构及数据

    数据写入模式

    数据写入表格存储的处理方式。取值范围如下:

    • 按事件类型处理:根据插入事件、更新事件和删除事件分别设置数据写入策略。

    • 追加写入:只处理插入事件,丢弃更新事件和删除事件。

    数据写入策略

    按照事件类型处理数据写入时的策略。当数据写入模式选择为按事件类型处理时才能设置此参数。

    处理插入事件的策略为目标存在时更新,处理更新事件和删除事件的策略为不存在时丢弃

    全量多线程写入

    全量数据写入的并发线程数,默认值为8,可基于目标端写性能适当调整。

    增量写入线程数

    增量数据写入的并发线程数,默认未启用。打开增量写入线程数开关后可基于目标端写性能适当调整。

  7. 可选:单击上方的fig_settingicon图标,请根据下表说明配置任务属性。

    参数

    描述

    任务名称

    同步任务的名称,请根据实际设置。

    同步类型

    数据同步的类型。取值范围如下:

    • 全量+增量:全量数据同步完成后,再同步增量数据。

    • 全量:将源端的存量数据复制到目标端。

    • 增量:将源端实时产生的新数据或数据变更复制到目标端。

    任务描述

    任务的描述信息。

    高级设置

    计划开始时间

    任务的计划开始时间。

    如果需要指定任务开始时间,打开计划开始时间开关后,选择开始的日期和时间。

    数据校验

    打开数据校验开关后,任务会自动对同步结果的一致性进行全量校验和增量校验,并会在运行监控页面展示校验不一致的数据行数。

    重要

    当任务符合以下任意一种情况时,即使打开数据校验开关,任务也不会进行校验。

    • 添加了中间处理节点。

    • 源连接不支持校验。

    • 目标连接不支持校验。

    增量同步并发写入

    打开增量同步并发写入开关后,增量同步时,源端数据会并发写入目标端。

    增量滞后判断时间设置

    用于快速判断复制任务是否存在滞后。

    打开增量滞后判断时间设置开关并设置判断时间。增量同步时,如果增量同步的滞后时间大于设置的判断时间,则复制任务存在滞后。

    默认值为1,单位为秒。

    处理器线程数

    处理器的线程数。

    增量数据处理模式

    增量同步时,增量数据的处理模式。取值范围为批量逐条

    agent设置

    使用的Agent信息。取值范围如下:

    • 平台自动分配(默认):由平台分配节点进行连接访问。

    • 用户手动指定:设置此参数为用户手动指定后,选择要使用的Agent。

  8. 确认无误后,单击启动

    操作完成后,您可以查看任务的执行情况,例如QPS、延迟、任务时间统计等信息。