同步MySQL的数据至MaxCompute时,来源数据源为MySQL,去向数据源为MaxCompute,执行数据同步任务前,您需要参考本文,在数据源中完成网络、白名单及权限等相关配置,为后续执行数据同步方案做好网络环境及账号权限的准备。

前提条件

配置数据源之前,请确保已完成以下规划与准备工作。
  • 准备数据源:已购买来源数据源MySQL、去向数据源MaxCompute。
  • 资源规划与准备:已购买独享数据集成资源组,并完成资源配置。详情可参见资源规划与配置
  • 网络环境评估与规划:进行数据集成前,您需根据业务情况,打通数据源、独享数据集成资源组之间的网络,网络联通后参考本文进行交换机、白名单等网络环境下的访问配置。
    • 如果数据源和独享数据集成资源组均处于同地域的同一VPC网络中,数据源与资源组间的网络天然联通。
    • 如果数据源和独享数据集成资源组均处于不同的网络环境中,您需要通过VPN网关等方式,将数据源与资源组间的网络打通。
  • 查看当前使用的数据库版本是否为MySQL5.x8.x版本。您可以通过如下语句查看。
    select version();
    说明 DataWorks的数据集成实时同步MySQL数据是基于实时订阅MySQL实现的,实时同步MySQL数据目前仅支持配置MySQL数据源为RDS的5.x8.x版本的MySQL,不支持配置为DRDS的MySQL。如果当前使用的数据库版本不是RDS的5.x8.x版本的MySQL,请更换为使用RDS的5.x8.x版本的MySQL,否则会导致数据集成任务无法执行。
  • 工具准备:进行MaxCompute数据源的项目属性配置时,需使用MaxCompute客户端,您需要提前下载客户端并熟悉客户端操作。操作详情可参见使用客户端(odpscmd)连接

背景信息

同步来源数据源的数据至去向数据源时,您需要保障数据源与DataWorks的独享数据集成资源组在网络上是联通的,且不存在账号权限的访问限制。
  • 网络白名单
    以下以使用同一VPC网络环境为例,您需要将数据集成资源组所在的VPC网段添加至白名单中,保障数据集成资源组可访问数据源。网络联通vpc
  • 账号权限

    您需要规划一个可访问数据源的账号,用于后续数据集成过程中访问数据源并进行数据提取、写入的同步操作。

  • 其他访问限制。

    来源数据源为MySQL时,您需要开启Binlog。Binlog是记录所有数据库表结构变更(例如执行CREATE、ALTER操作)以及表数据修改(例如执行INSERT、UPDATE、DELETE等)的日志。方便您可以通过Binlog日志中的内容,查看数据库的变更历史、进行数据库增量备份和恢复以及主从数据库的复制。

    Binlog日志的格式如下:
    • Statement:基于SQL语句的复制。Binlog中会保存每条修改数据的SQL语句。
    • Row:基于行的复制。Binlog中不保存SQL语句上下文的相关信息,仅保存被修改的记录。
    • Mixed:混合模式复制。Statement与Row的结合,一般的语句修改使用Statement格式(例如函数),Statement无法完成复制的操作,则采用Row格式保存Binlog。MySQL会根据执行的每条SQL语句自主识别使用哪种格式。

使用限制

  • DataWorks的数据集成实时同步MySQL数据是基于实时订阅MySQL Binlog实现的,实时同步MySQL数据目前仅支持配置MySQL数据源为RDS的5.x8.x版本的MySQL,不支持配置为DRDS的MySQL。
  • DDL的增加列不支持在表中间加列,会引起列错乱的数据质量问题,仅支持在表末尾加列的DDL操作。

配置来源数据源:MySQL

  1. 配置白名单。
    将独享数据资源组所在的VPC网段添加至MySQL的白名单中,操作如下:
    1. 查看并记录独享数据资源组所在的VPC网络。
      1. 登录DataWorks控制台
      2. 在左侧导航栏,单击资源组列表
      3. 独享资源组页签下,单击目标数据集成资源组后的查看信息
      4. 复制对话框中的EIP地址网段至数据库白名单。查看EIP地址和网段
      5. 独享资源组页签下,单击目标数据集成资源组后的网络设置
      6. 专有网络绑定页签,查看交换机网段并将其添加至数据库的白名单中。查看交换机网段
    2. 将上述步骤中记录的独享数据集成资源组的EIP地址和网段添加至MySQL集群的白名单中。
  2. 创建账号并配置账号权限。
    您需要规划一个数据库的登录账号用于后续执行操作,此账号需要拥有数据库的 SELECT, REPLICATION SLAVE, REPLICATION CLIENT权限。
    1. 创建账号。
      操作详情请参见创建MySQL账号
    2. 配置权限。
      您可以参考以下命令为账号添加此权限,或直接给账号赋予SUPER权限。如下执行语句在实际使用时,请替换'同步账号'为上述创建的账号。
      -- CREATE USER '同步账号'@'%' IDENTIFIED BY '密码'; //创建同步账号并设置密码,使其可以通过任意主机登录数据库。%表示任意主机。
      GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '同步账号'@'%'; //授权同步账号数据库的 SELECT, REPLICATION SLAVE, REPLICATION CLIENT权限。
      *.*表示授权同步账号对所有数据库的所有表拥有上述权限。您也可以指定授权同步账号对目标数据库的指定表拥有上述权限。例如,授权同步账号对test数据库的user表拥有上述权限,则可以使用GRANT SELECT, REPLICATION CLIENT ON test.user TO '同步账号'@'%';语句。
      说明 REPLICATION SLAVE语句为全局权限,不能指定授权同步账号对目标数据库的指定表拥有相关权限。
  3. 开启MySQL的Binlog。
    检查Binlog是否开启并查询Binlog格式,操作如下:
    • 使用如下语句检查Binlog是否开启。
      show variables like "log_bin";

      返回结果为ON时,表明已开启Binlog。

    • 如果您使用备用库同步数据,则还可以通过如下语句检查Binlog是否开启。
      show variables like "log_slave_updates";

      返回结果为ON时,表明备用库已开启Binlog。

    如果返回的结果与上述结果不符,请参考MySQL官方文档开启Binlog。
    使用如下语句查询Binlog的使用格式。
    show variables like "binlog_format";
    返回结果说明:
    • 返回ROW,表明开启的Binlog格式为ROW
    • 返回STATEMENT,表明开启的Binlog格式为STATEMENT
    • 返回MIXED,表明开启的Binlog格式为MIXED

配置去向数据源:MaxCompute

  1. 使用MaxCompute的Project Owner 账号登录客户端。
    操作详情可参见使用客户端(odpscmd)连接
  2. 打开项目的acid属性。
    使用Project Owner账号在客户端执行以下命令。
    setproject odps.sql.acid.table.enable=true;
  3. 可选:开启使用数据2.0。
    如果需要使用MaxCompute数据2.0类型中的timestamp类型,您需要使用Project Owner账号在客户端执行以下命令开启数据2.0。
    setproject odps.sql.type.system.odps2=true;
  4. 创建账号。
    此账号在后续添加数据源时需配置使用,用于对接MaxCompute进行数据同步操作。操作详情可参见准备阿里云账号

    创建完成后,您可记录下此账号的Accesskey ID和Accesskey Secret,便于后续配置使用。

后续步骤

配置完成数据源后,来源数据源、资源实例、去向数据源彼此间已可网络联通,且不存在访问限制。您可将来源数据源和去向数据源添加至DataWorks的数据源列表中,便于后续创建数据同步方案时关联来源和去向数据源。

添加数据源操作可参见添加数据源