操作场景
DTS 支持同步的高级对象有函数、存储过程。高级对象的同步是一次性动作,仅支持同步在任务启动前源库中已有的高级对象,在任务启动后,源库新增的高级对象不会同步到目标库中。
适用范围
同步高级对象当前支持的链路范围如下:
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
注意事项
同步高级对象时,建议不要进行库表重命名操作,否则可能会导致高级对象同步失败。
高级对象同步失败并不会影响整个同步任务,所以整个同步任务成功不能保证高级对象也同步成功,建议用户在同步任务完成后,自行在进度详情页查看高级对象是否同步成功。
在同步存储过程和函数时,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
。如果勾选的高级对象定义中存在
'''
(转义),会碰到 MySQL 自身限制,从而导致迁移任务失败,建议不要勾选这类高级对象。操作步骤
1. 在 数据同步任务 的设置同步选项及同步对象页面,设置高级对象功能。默认会勾选高级对象,如果不需要同步高级对象,可以取消勾选。
2. 校验任务中会增加高级对象的检查项,具体请参考 高级对象检查。