在DataWorks上进行数据同步前,您需要参考本文提前在MySQL侧进行数据同步环境准备,以便在DataWorks上进行MySQL数据同步任务配置与执行时服务正常。本文为您介绍实时同步场景下MySQL同步前的相关环境准备。

使用限制

  • 数据集成仅支持实时同步5.x8.x版本的MySQL数据,且不支持同步DRDS MySQL数据。
  • 不支持XA ROLLBACK,针对已经XA PREPARE的事务数据,实时同步会将其同步到目标端,如果XA ROLLBACK,实时同步不会针对XA PREPARE的数据做回滚写入的操作。若要处理XA ROLLBACK场景,需要手动将XA ROLLBACK的表从实时同步任务中移除,再添加表后重新进行全量数据初始化以及增量实时同步。
  • 实时同步不支持Functional index。
  • 如果Binlog在消费中,则无法被数据库删除。如果实时同步任务运行延迟将可能导致源端Binlog长时间被消费,请合理配置任务的延迟告警,并及时关注数据库的磁盘空间。

确认MySQL版本

实时同步MySQL数据目前仅支持配置MySQL数据源为RDS的5.x8.x版本的MySQL数据源,如果需要同步DRDS的MySQL,请不要将DRDS的MySQL配置为MySQL数据源,您可以参考配置DRDS数据源文档直接将其配置为DRDS数据源。您可以在MySQL数据库通过如下语句查看当前MySQL数据库版本。

select version();

配置账号权限

您需要提前规划并创建一个专用于DataWorks访问数据源的MySQL账号,在实时同步场景下,此账号需要拥有数据库的SELECTREPLICATION SLAVEREPLICATION 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语句为全局权限,不能指定授权同步账号对目标数据库的指定表拥有相关权限。

开启MySQL Binlog

数据集成通过实时订阅MySQL Binlog实现增量数据实时同步,您需要在DataWorks配置同步前,先开启MySQL Binlog服务。操作如下:

  1. 检查Binlog是否开启。
    • 使用如下语句检查Binlog是否开启。
      show variables like "log_bin";

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

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

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

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

附录:MySQL Binlog相关说明

MySQL Binlog是记录所有数据库表结构变更(例如执行CREATE、ALTER操作)以及表数据修改(例如执行INSERT、UPDATE、DELETE等)的日志。方便您可以通过Binlog日志中的内容,查看数据库的变更历史、进行数据库增量备份和恢复以及主从数据库的复制。Binlog日志的格式如下:
  • Statement:基于SQL语句的复制。Binlog中会保存每条修改数据的SQL语句。
  • Row:基于行的复制。Binlog中不保存SQL语句上下文的相关信息,仅保存被修改的记录。
  • Mixed:混合模式复制。Statement与Row的结合,一般的语句修改使用Statment格式(例如函数),Statement无法完成复制的操作,则采用Row格式保存Binlog。MySQL会根据执行的每条SQL语句自主识别使用哪种格式。

后续步骤

  • 创建MySQL数据源:进行数据同步前,您需要先在DataWorks上创建要进行数据同步的MySQL数据源,以便在DataWorks上配置数据同步任务时,可通过选择数据源名称来确定需要读取的数据库。在配置数据源时,请使用上述配置账号权限中已拥有相关同步权限的账号。
  • 配置资源组与网络连通:您需要保障数据源与执行数据同步任务的独享数据集成资源组的网络联通。