任务提示“function uuid_generate_v4() does not exist”怎么办?
这是由于目标数据库PostgreSQL未安装uuid-ossp插件所致,请进行以下操作后重新发起迁移任务。
需要在目标PostgreSQL数据库安装uuid-ossp插件。插件下载地址:http://www.ossp.org/pkg/lib/uuid/。安装完插件后,在目标库的SCHEMA下执行create extension
"uuid-ossp"语句即可。
任务提示“invalid input syntax for type bigint XXX”怎么办?
这是由于源端数据库中表字段没有配置精度所致,请进行以下操作后重新发起迁移任务。
需针对没有配置精度的表,根据实际数据情况配置精度。
任务提示“ORA-12547: TNS:lost contact”怎么办?
这是由于节点未加入到数据库白名单中所致。请进行以下操作后重新发起迁移任务。
将服务节点地址加到数据库白名单中。
迁移完成后,若想再次迁移如何操作?
可在清理目标库后,点击“重试”按钮。
创建迁移任务时,连接检测不通过怎么办?
查看数据库是否允许公网访问:
如果不允许公网访问则开通公网访问。
如果允许公网访问,则排查节点地址是否被纳入到数据库白名单,如未纳入,请在数据库白名单加入节点地址。
迁移任务中提示“Packet for query is too large (x>y). You can change this value on the server by setting the 'max_allowed_packet' variable”如何处理?
由于MySQL的max_allowed_packet配置小于云迁批处理提交大小。
由于列设置了默认值,因此过滤后会生成默认值。
具体步骤:
- 在MySQL执行“set global max_allowed_packet=z”,z需要大于报错信息中x的值。
迁移任务中提示“Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs.”如何处理?
MySQL中规定,表中所有字段的长度不能超过65535。
具体步骤:
将源库中长度过长的字段的类型替换为Text或blob。
迁移任务中提示 “relation "XXX" does not exist”如何处理?
表依赖的对象不存在。
具体步骤:
手动将表以来的对象迁移至目标库后,再重新执行迁移任务。
迁移任务中提示“type XXX does not exist”如何处理?
表依赖的数据类型不存在
具体步骤:
手动将表依赖的数据类型迁移至目标库后,再重新执行迁移任务。如是异构数据库,则该类型可能无法构建,将无法迁移。
迁移/订阅/同步任务速度慢/卡住,如何排查?
步骤如下:
1、通过评估获取源库数据量,进行迁移时间预估,判断当前性能是否符合预期;
2、排查节点所在主机内存和CPU是否已经占满,如占满建议将任务分批分时段进行,规避资源紧张;
3、排查源库和目标库所在主机的内存、CPU、IO、磁盘是否占满,如占满建议排查资源占用,降低资源占用后,再重试迁移;
4、排查网络连通性、带宽是否存在限制,在条件允许的情况建议升级带宽。
迁移记录数为什么比预期数量多?
迁移任务启动后,源数据库又写入了新的数据。
解决步骤:
1、迁移任务仅选择全量迁移时,迁移任务开始后,请勿对源库进行数据变更操作;
2、选择全量+增量迁移的方式同步增量。
迁移任务过滤某些列,为什么迁移后这些列有值?
由于列设置了默认值,因此过滤后会生成默认值。
解决方法: 移除列的默认值配置。
数据库迁移工具任务长时间停滞在准备阶段,应当如何处理?
1、查看当前任务迁移对象是否过多:当任务勾选的迁移对象过多时,数据库迁移工具需花费较多时间初始化任务信息,请耐心等候;
2、查看迁移节点是否正常运行:可以通过采集任务日志、访问迁移节点主机查看迁移节点服务状态是否异常。
MySQL函数迁移时,界面报错“This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)”,该如何处理?
该问题是由于MySQL的log_bin_trust_function_creators默认为值为OFF,提高了函数迁移的权限要求。
解决方法:
1、连接目标数据库,执行show variables like '%func%;查看log_bin_trust_function_creators设置值;
2、如果log_bin_trust_function_creators设置值为OFF,通过执行set global log_bin_trust_function_creators=1开启该配置,降低函数迁移的权限要求。
PostgreSQL迁移至MySQL时,迁移界面报错“BLOB/TEXT column 'xxxxx' used in key specification without a key length”,该如何处理?
该问题是PostgreSQL源库的表设置了主键,主键数据类型为varchar,但没有设置数据长度限制所致。
**解决方法:**修改源库表的varchar字段,为其配置明确的长度限制,如varchar(255)。
MySQL迁移结构时,连接检测时提示“用户缺少该database的super权限” ,该如何处理?
当用户只进行数据库数据迁移时,可忽略该提示。如果用户要进行结构迁移(如表、视图)时,则需要给当前用户账号赋予SUPER权限,否则可能会导致数据库迁移失败。
MySQL数据库作为源端或目标端增量迁移时,界面提示错误信息” Client does not support authentication protocol requested by server; consider upgrading MySQL client”,该如何处理?
1、查看源端数据库账号,是否具备REPLICATION CLIENT和REPLICATION SLAVE权限,如果源库账号不具备该权限,则需要赋予REPLICATION CLIENT和REPLICATION SLAVE权限后,重新发起任务;
2、执行SELECT plugin FROM mysql.user WHERE user = 'username' AND host = '%'查看目标端数据库账号的认证插件。如果返回值为“caching_sha2_password”,执行“ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password”将认证插件改为“mysql_native_password”。
MySQL迁移时,界面提示错误“Column 'xxxx' cannot be null”,该如何处理?
1、查看该表结构中的xxx列是否为时间类型;
2、若为时间类型,使用“select xxx from table_name where xxx is null”查看该列数据是否为“0000-00-00”或“0000-00-00 00:00:00”。若为该值,则需要对数据进行处理,若数据无用则进行清理,有用则需修改该列的值。修复后再重新进行迁移;
3、若非时间类型,使用“select xxx from table_name where xxx is null”查看该列数据是否为“null“,若是为null,则可能该表曾发生过变更,后加的非空约束。因此表中存在空值。建议迁移时取消源表的非空约束,或修改不符合要求的数据后,再重新迁移。
MySQL迁移时报错“DAY_OF_MONTH”、“MONTH”。
这是由于数据表时间字段中存在不符合规范的数据,需要进行数据修复后,再重新迁移。
MySQL迁移时报错“E0101:The target table does not exist”。
这是目标表不存在导致。如果您希望服务自动建表,则在迁移任务配置时勾选“结构迁移”模式;如果您希望自行建表,需在迁移任务启动前,在目标数据库完成建表。