迁移高级对象

最近更新时间:2024-10-15 14:36:52

我的收藏

操作场景

DTS 支持迁移的高级对象有函数、触发器、存储过程和事件。高级对象的迁移是一次性动作,仅支持迁移在任务启动前源库中已有的高级对象,在任务启动后,源库新增的高级对象不会同步到目标库中。
说明
当前支持高级对象迁移的场景为 MySQL、TDSQL-C MySQL、MariaDB、Percona 之间的数据迁移。

适用范围

仅对 NewDTS 的数据迁移。

注意事项

迁移高级对象时,建议不要进行库表重命名操作,否则可能会导致迁移高级对象失败。
高级对象迁移失败并不会影响整个迁移任务,所以整个迁移任务成功不能保证高级对象也迁移成功,建议用户在迁移完成后,自行在进度详情页查看高级对象是否迁移成功。
在迁移存储过程和函数时,DTS 会检查源库中 DEFINER 对应的 user1( [DEFINER = user1])和迁移账号 user2 是否一致,如果不一致,迁移后 DTS 会修改 user1 在目标库中的 SQL SECURITY 属性,由 DEFINER 转换为 INVOKER( [INVOKER = user1]),同时设置目标库中 DEFINER 为迁移账号 user2([DEFINER = 迁移账号 user2])。
存储过程和函数,在“源库导出”阶段进行迁移;触发器和事件,没有增量任务,在任务结束时进行迁移,有增量任务,在用户单击完成操作后开始迁移,所以单击完成后任务的过渡时间会长一些。
对于跨版本的迁移,如果源库中高级对象设置的 sql_mode,目标库不支持,高级对象迁移到目标库后会将 sql_mode 改为 NO_AUTO_VALUE_ON_ZERO
迁移触发器和事件时,需要对迁移账号授权源库的 TRIGGER 和 EVENT 权限。
如果勾选的高级对象定义中存在'''(转义),会碰到 MySQL 自身限制,从而导致迁移任务失败,建议不要勾选这类高级对象。

操作步骤

1. 数据迁移任务设置迁移选项及选择迁移对象页面,设置高级对象功能。 默认不勾选高级对象,如果需要迁移,请用户自行选择。


2. 校验任务中会增加高级对象的检查项,具体请参考 高级对象检查