数据传输 常见问题FAQ
数据传输/常见问题FAQ
常见问题FAQ
数据迁移FAQ
(1) 数据迁移预检查时,预检查项schema不存在失败是什么原因?如何修复?
目前DTS已经支持自动在目标RDS实例创建数据库。如果在预检查时报schema不存在,那么可能的原因如下: 您本地的数据名称含有大写字母、特殊字符或是为RDS的关键字。RDS要求数据名由小写字母、数字、下划线 、中划线组成,字母开头,字母或数字结尾,最长64个字符。如果您源实例的数据名称不满足这个要求,那么DTS就不会自动在RDS中创建这个库,而会在预检查时,报schema不存在的错误。特殊字符
为了解决这个问题,您需要先手动在RDS控制台创建一个合法的数据库,然后在配置DTS迁移任务时,使用库 名映射,将本地数据库中的数据迁移到RDS上这个名字合法的数据库中。具体可以参考:最佳实践中的库名不同 的数据库之间的数据迁移一节
(2) RDS的白名单列表中突然添加了很多不认识的IP,这些IP是哪里的?是否安全?
DTS在数据迁移之前,会判断源或目标RDS实例是否设置了白名单,如果RDS实例限制了白名单,DTS服务器 不能访问。那么DTS会在配置迁移任务时,将服务器的IP列表添加到RDS实例的白名单中,防止因为白名单限 制,DTS连接不上RDS实例导致迁移失败。
在迁移完成后的一天内, DTS会将自己服务器列表IP从RDS白名单中删除掉。 (3) 使用DTS进行数据迁移,源数据库的数据会不会在迁移后被删除掉?
不会,DTS进行数据迁移时,其实是复制了源数据库的一份数据,并不会对源数据库的数据有任何影响。 (4) 我的阿里云账号下面有两个RDS实例A,B,DTS是否可以将A中的数据库C迁移到B中的数据库D? 可以,DTS提供的库名映射功能,可以实现将两个RDS实例中不同库名的两个数据库之间的数据迁移。具体任 务配置方法详见:最佳实践中的库名不同的数据库之间的数据迁移
(5) DTS是否能支持两个不同阿里云账号下的RDS实例之间的数据迁移?是否支持增量迁移?
可以,进行跨阿里云账号下RDS实例间的迁移,需要以目标RDS实例所属的阿里云账号登录DTS,同时源实例 类型选择有公网IP的自建数据库。具体的任务配置方法详见:最佳实践中的跨阿里云账号的RDS实例间的数据 迁移
(6) 迁移的目标库中已经存在表了,使用DTS进行数据迁移是否会覆盖掉这些数据?
不会,如果配置迁移任务时,要进行整个数据库的迁移,那么预检查时,会要求目标待迁入数据库为空库,如 果不是空库,那么预检查的\目标库是否为空\项会报错。
如果配置迁移任务时,只迁移几个表,那么预检查时,会要求目标库中这些表必须没有数据,如果含有数据库 的,那么预检查的\目标库是否为空\项会报错。
在目标库有数据的情况下,DTS不支持进行数据迁移,所以不会DTS数据迁移不会覆盖掉已存在的数据。
1
数据传输/常见问题FAQ
(7) DTS是否支持在一个RDS实例中,复制出一个跟数据库A一模一样的库B?
支持,DTS提供的对象名映射功能,可以实现在一个RDS实例内复制出一个跟已存在库一模一样的库。具体任 务配置方法详见:最佳实践中的实例内不同数据库之间的数据迁移一节 (8) DTS迁移过程中,是否会锁表,对源数据库是否有影响?
如果配置迁移任务时,选择了全量数据迁移和增量数据迁移,那么在全量数据迁移过程中,DTS会判断源数据 库中是否存在非事务且无主键的表,如果存在,那么为了保证迁移数据一致性,DTS会给这些表上只读锁,然 后将这些表的数据全量迁移到目标库之后,释放掉只读锁,进行其他表的全量迁移。 在上只读锁期间,只有被上锁的表只能进行只读操作,其他表可以正常读写。 (9) DTS迁移时,对于ECS、RDS实例是走内网还是公网?
如果是进行同一个地区内部的数据迁移,那么DTS会使用内网连接ECS、RDS实例
如果是进行跨地区的数据迁移,那么DTS会使用外网连接源实例(ECS、RDS),使用内网连接目标RDS实例 (10) 数据迁移过程中,是否支持DDL操作?
目前DTS数据迁移过程中,不支持源库进行DDL操作。如果迁移过程中源库进行了DDL操作,那么可能导致数 据丢失。
(11) 全量迁移报java.sql.BatchUpdateException: INSERT, DELETE command denied to user 'user'@'host' for table * 是什么原因?
全量迁移如果报INSERT、CREATE或DELETE等的权限问题,一般都是由于目标RDS实例被锁定了,导致账号写 权限被回收。
对于这个问题,需要先回收目标RDS实例的日志空间或升级目标RDS实例的规格后,在DTS控制台触发重试功 能,断点重启任务。具体修复方法详见:最佳实践中的失败修复一节
(12) DTS的增量迁移基本原理是什么?是否能够保证两边数据库实时的?使用增量迁移时,什么时候会锁表? DTS的增量迁移是实时获取在迁移过程中,源数据库产生的增量数据,然后在全量迁移完成后,开始同步到目 标RDS实例中。
当增量迁移第一次追平源库的写入时,增量迁移的状态为无延迟,此后增量迁移会一直同步源数据库的业务写 入。
如果用户选择了量数据迁移和增量数据迁移,那么在全量数据迁移过程中,DTS会判断源数据库中是否存在非 事务且无主键的表,如果存在,那么为了保证迁移数据一致性,DTS会给这些表上只读锁,其他情况下 ,DTS不会给源数据库上锁
(13) DTS进行RDS迁移时,是从RDS的主库还是备库获取数据? DTS进行数据迁移时,是从RDS的主库上拉取数据。 (14) DTS是否支持VPC模式下的RDS实例的数据迁移?
如果VPC 模式的RDS实例为目标实例时,DTS暂时不支持它的数据迁移
如果VPC模式的RDS实例为源实例时,DTS可以支持将它的数据迁移到经典网络的RDS实例上。但是在配置任 务时,源实例的类型为由公网IP的自建数据库,然后填写源RDS实例的外网连接串,此时DTS会使用外网DNS连接RDS实例。
(15) DTS是否支持VPC内的ECS上的自建数据库迁移到RDS实例?
不支持,DTS现在还不能支持VPC内部的ECS上的自建数据库迁移到RDS实例
(16) 使用DTS将自建数据库迁移到RDS,为什么迁移过程中RDS的空间大小会比源数据库大?
2