操作场景
使用 gh-ost、 pt-online-schema-change(下文简称 pt-osc )等工具对源库中的表做 Online DDL,需要将 Online DDL 变更产生的临时表同步到目标库。
DTS 支持在选择同步对象时,提前关联对象表的临时表名,在后续源库产生临时表时一并进行同步。
使用 gh-ost 工具对表
表名
做 Online DDL,DTS 支持同步临时表 _表名_ghc
、_表名_gho
、_表名_del
到目标库。 使用 pt-osc 工具对表
表名
做 Online DDL,DTS 支持同步临时表 _表名_new
、 _表名_old
到目标库。适用范围
同步 Online DDL 临时表支持的链路范围如下:
MySQL/MariaDB/Percona/TDSQL-C MySQL > MySQL
MySQL/MariaDB/Percona > MariaDB
MySQL/MariaDB/TDSQL-C MySQL > TDSQL-C MySQL
MySQL/MariaDB/Percona/TDSQL-C MySQL > Kafka
MySQL/MariaDB/Percona > TDSQL TDStore
约束限制
表映射(表重命名)功能与迁移 Online DDL 临时表功能冲突,只能选择一个功能使用。
操作步骤
1. 登录 DTS 控制台,在左侧导航选择数据同步页,创建同步任务。
2. 在“设置同步选项和同步对象”步骤中,勾选是否同步 Online DDL 临时表,和 Online DDL 工具。
勾选 gh-ost,DTS 会将 gh-ost 工具产生的临时表名(
_表名_ghc
、_表名_gho
、_表名_del
)迁移到目标库。 勾选 pt-osc, DTS 会将 pt-osc 工具产生的临时表名(
_表名_new
、 _表名_old
)迁移到目标库。说明
右方已选对象中,需要勾选指定的表对象,下面才会显示“是否同步 Online DDL 临时表”的按钮,勾选库名,或者勾选 Tables,无法显示“是否同步 Online DDL 临时表”的按钮。
如果源库中已存在与临时表名
_表名_new
、_表名_old
相同的表名,则 pt-osc 会产生其他临时表,由于 pt-osc 产生的其他临时表名并非固定,DTS 无法同步其他临时表。这种情况同步对象不能仅选择这个表,需要选择这个表所在的整个库(或者整个实例),否则无法同步 Online DDL 变更产生的临时表数据到目标数据库。