DTS订阅binlog

更新时间:
复制 MD 格式

本文为您介绍如何使用数据传输服务DTS(Data Transmission Service)订阅AnalyticDB for MySQL Binlog,并实现AnalyticDB for MySQL集群之间的数据同步与增量迁移。

前提条件

  • AnalyticDB for MySQL产品系列为企业版基础版湖仓版数仓版弹性模式

  • AnalyticDB for MySQL集群的内核版本:

    • xuanwu_v1表引擎:需为3.2.1.0及以上版本。

    • xuanwu_v2表引擎:需为3.2.6.0及以上版本。

    • 如需订阅物化视图增量刷新的Binlog,内核版本需为3.2.6.9、3.2.7.1及以上。

    说明

    云原生数据仓库AnalyticDB MySQL控制台集群信息页面,配置信息区域,查看和升级内核版本

  • AnalyticDB for MySQL集群已开启CDC功能。

    说明

    CDC(Change Data Capture)功能用于捕获数据变更,支持增量数据同步和迁移。如需开启CDC功能或不清楚CDC功能是否已开启,请联系技术支持。

操作步骤

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,然后单击目标集群ID。

  2. 开启Binlog功能,本文以表名为source_table为例。

    说明

    AnalyticDB for MySQL仅支持按表开启Binlog功能。

    建表时,开启Binlog

    CREATE TABLE source_table (
      `id` INT,
      `num` BIGINT,
      PRIMARY KEY (`id`)
    )DISTRIBUTED BY HASH (id) BINLOG=true;

    建表后,开启Binlog

    ALTER TABLE source_table BINLOG=true;
  3. (可选)修改Binlog保留时长。

    您可以通过修改binlog_ttl参数来调整Binlog的保留时长,参数默认值为6h。以下示例表示将表source_tableBinlog保留时长设置为1天。

    ALTER TABLE source_table binlog_ttl='1d';

    binlog_ttl参数取值支持以下格式:

    • 毫秒:纯数字。示例:60代表60毫秒。

    • 秒:数字+s。示例:30s代表30秒。

    • 小时:数字+h。示例:2h代表2小时。

    • 天:数字+d。示例:1d代表1天。

    说明
    • 内核版本为3.2.1且为3.2.1.9及以上、3.2.2且为3.2.2.14及以上、3.2.3且为3.2.3.8及以上、3.2.4且为3.2.4.4及以上、3.2.5且为3.2.5.1及以上的集群,Binlog保留时长上限为365天。内核版本低于上述的集群,Binlog保留时长上限为21天。

    • 建议您设置的Binlog保留时间不小于binlog_ttl参数的默认值。若设置的保留时间过短,可能会导致文件被清理,影响数据同步。

    • 如果您需要查看当前Binlog保留时长,执行语句SHOW CREATE TABLE source_table;

  4. 使用DTS订阅Binlog。

    DTS通过订阅Binlog,可实现AnalyticDB for MySQL集群之间的数据同步增量迁移

  5. (可选)查看Binlog信息。

    说明

    使用以下语句查看Binlog日志信息时,若仅开启Binlog功能,日志信息显示为0。只有成功订阅Binlog后,才会显示日志信息。

    • 若您需要获取Binlog最新写入的文件名和位置信息,请执行以下SQL语句:

      SHOW MASTER STATUS FOR source_table;
    • 若您需要了解所有未清理的历史Binlog文件及其大小,请执行以下SQL语句:

      SHOW BINARY LOGS FOR source_table;

开启Binlog的性能影响

开启Binlog功能后,AnalyticDB for MySQL会额外记录数据变更日志,对集群产生以下影响:

  • CPU 开销:开启 Binlog 的表在执行 INSERT、UPDATE、DELETE 时会有额外的 CPU 开销。常规业务场景下 CPU 增加通常不超过 10%,极端高并发写入场景可能达到约 40%。建议在业务低峰期开启或先在测试库评估。

  • 存储开销:Binlog 文件按数据变更量增长并占用磁盘空间。空间占用与 binlog_ttl 保留时长成正比,请根据实际同步需求合理设置保留时长,避免过期数据占用空间。

  • 查询性能:开启 Binlog 不影响查询性能。

常见问题

是否支持监听Binlog日志?

支持。AnalyticDB for MySQL支持表级Binlog监听,即您可以对指定表开启Binlog功能后,通过DTS或程序等工具订阅该表的数据变更事件。目前不支持实例级Binlog,无法通过单个订阅获取整个实例中所有表的变更日志。如需监听多张表的Binlog,请分别对每张表开启Binlog功能后进行订阅。