OceanBase 数据库 MySQL 租户之间的同步 DDL
迁移或同步 OceanBase 数据库 MySQL 租户的数据至 OceanBase 数据库 MySQL 租户时,支持同步 DDL。
如果源端创建了 index,目标端已经存在。数据传输会自动忽略该 index,不会中断。
同步 DDL 支持的范围
添加列
ALTER TABLE ADD COLUMN
修改列
ALTER TABLE MODIFY COLUMN
重要仅支持修改列至更大的长度,不支持修改列的类型。
修改列的默认值
ALTER TABLE ALTER COLUMN SET DEFAULT
或ALTER TABLE ALTER COLUMN DROP DEFAULT
删除列
ALTER TABLE DROP COLUMN
创建表
CREATE TABLE
删除表
DROP TABLE
清空表
TRUNCATE TABLE
新建索引
CREATE INDEX
或ALTER TABLE ADD INDEX
删除索引
DROP INDEX
或ALTER TABLE DROP INDEX
表重命名
RENAME TABLE
或ALTER TABLE RENAME
同步 DDL 的使用限制
如果需要同步的表涉及支持范围外的 DDL,数据迁移或数据同步项目可能会中断并造成数据问题,且无法恢复。
不能频繁对一张表进行 DDL 操作。当 Store 处理完当前 DDL 后(根据位点判断),再进行下一个 DDL。否则 Store 可能异常退出或造成数据问题,且无法恢复。
新建 Store 前的一段时间和启动过程中,需要确保无 DDL。如果是回拉,回拉点至当前时间保证无 DDL。否则 Store 可能异常退出或造成数据问题,且无法恢复。
RENAME TABLE
前后的表名,必须全在需要同步的表中,或者全不在需要同步的表中。开启同步 DDL 后,
DROP INDEX
命令会无差别执行,可能导致目标端索引丢失。