对目标端数据库的影响(gtid_executed表)

dtle.gtid_executed_v4

当目标端是MySQL数据库时, dtle会在目标端自动创建表dtle.gtid_executed_v4, 目标端的用于回放数据的数据库用户需要对这张表有相应权限.

dtle.gtid_executed_v4的作用是存储已经回放的事务的GTID, 用作断点续传/数据检查等.

使用表dtle.gtid_executed_v4模仿GTID机制, 而不使用MySQL原生GTID机制的原因是: 在回放时, set GTID_NEXT=... 语句需要 SUPER 权限, 而云环境下, 数据库用户可能无法拥有 SUPER 权限.

dtle.gtid_executed_v4的建表语句如下:

CREATE TABLE IF NOT EXISTS dtle.gtid_executed_v4 (
    job_name varchar(64) NOT NULL,
    source_uuid binary(16) NOT NULL,
    gtid int NOT NULL,
    gtid_set longtext,
  primary key (job_name, source_uuid, gtid)
);

表结构说明:

  • job_name: 执行同步的任务名
  • source_uuid: 源端数据库UUID号
  • gtid: 执行过的GTID gno编号。若某行该列为0,则表明这是一个汇总行
    • 行数过多时,会触发汇总机制
  • gtid_set: 对于gtid=0的汇总行,该列批量储存gno编号,如1-100:200:300-400

典型的查询方法

SELECT job_name, HEX(source_uuid), gtid, gtid_set FROM dtle.gtid_executed_v4;
-- 注意source_uuid以binary储存,直接查询会乱码,需要HEX()转换

results matching ""

    No results matching ""