OceanBase 数据库 MySQL 租户之间的同步 DDL

迁移或同步 OceanBase 数据库 MySQL 租户的数据至 OceanBase 数据库 MySQL 租户时,支持同步 DDL。

重要

如果源端创建了 index,目标端已经存在。数据传输会自动忽略该 index,不会中断。

同步 DDL 支持的范围

  • 添加列 ALTER TABLE ADD COLUMN

  • 修改列 ALTER TABLE MODIFY COLUMN

    重要

    仅支持修改列至更大的长度,不支持修改列的类型。

  • 修改列的默认值 ALTER TABLE ALTER COLUMN SET DEFAULTALTER TABLE ALTER COLUMN DROP DEFAULT

  • 删除列 ALTER TABLE DROP COLUMN

  • 创建表 CREATE TABLE

  • 删除表 DROP TABLE

  • 清空表 TRUNCATE TABLE

  • 新建索引 CREATE INDEXALTER TABLE ADD INDEX

  • 删除索引 DROP INDEXALTER TABLE DROP INDEX

  • 表重命名 RENAME TABLEALTER TABLE RENAME

同步 DDL 的使用限制

  • 如果需要同步的表涉及支持范围外的 DDL,数据迁移或数据同步项目可能会中断并造成数据问题,且无法恢复。

  • 不能频繁对一张表进行 DDL 操作。当 Store 处理完当前 DDL 后(根据位点判断),再进行下一个 DDL。否则 Store 可能异常退出或造成数据问题,且无法恢复。

  • 新建 Store 前的一段时间和启动过程中,需要确保无 DDL。如果是回拉,回拉点至当前时间保证无 DDL。否则 Store 可能异常退出或造成数据问题,且无法恢复。

  • RENAME TABLE 前后的表名,必须全在需要同步的表中,或者全不在需要同步的表中。

  • 开启同步 DDL 后,DROP INDEX 命令会无差别执行,可能导致目标端索引丢失。