点击领取2000元阿里云代金券,付款抵现金用,云服务器69元/年限时抢>>> 点击咨询成为阿里云VIP客户享永久折扣>>> 点击领取2860元腾讯云代金券,付款抵现金用,云服务器88元/年限时抢>>> 点击成为腾讯云VIP客户享永久折扣优惠>>> 点击进入华为云最新优惠活动现场>>> 点击成为华为云VIP客户享永久折扣优惠>>> 数据迁移的预检测及修复方案云数据库数据库备份 摘要
· 数据传输(Data Transmission)是阿里云提供的一种支持以数据库为核心的结构化存储产品之间的数据传输服务,它提供了数据迁移、数据订阅及实时同步等多种数据传输功能。使用数据传输服务实现数据一键上云的同时,您还可以轻松得构建安全、可扩展、高可用的数据架构。数据传输服务支持常见数据库类型,例如Oracle、MySQL、SQL Server、Postgres Plus Advanced Server的数据迁移,同时,它支持云数据库RDS MySQL的增量数据订阅及云数据库RDS实例间的实时同步。
本文将简单介绍云数据库RDS在数据迁移启动之间的预检查阶段检查的内容,失败原因及具体修复方法。
源库连接性检查 检测数据传输服务器是否能够连通要迁移的源数据库。数据传输服务通过JDBC协议创建到源数据库的连接,当创建连接失败时,这个检查项即失败。
1. 创建迁移任务时,提供的账号或密码不正确 检测方法:在任何一台能够网络能够跟源数据库互通的服务器上,使用创建迁移任务使用的账号/密码,通过客户端软件连接源数据库,确认是否能够正常连接。如果连接报错,且报错信息中含有Access deny,那么说明账号或密码有误。 修复方法:在数据传输服务控制台修改迁移任务,将账号密码修改成正确的配置后重新预检查。
2. 源库迁移账号限制了来源IP 检测方法: (1) 在一台网络能够跟源数据库连通的服务器上,使用创建迁移任务使用的账号/密码, 通过客户端软件连接源数据库,能够正常连接。此时说明源数据库限制了来源IP,只有允许的服务器可以连接,而数据传输服务器的IP不在授权列表,所以不能正常连接。 修复方法: (1) 如果源数据库为MySQL,那么在源数据库中执行grant all on . to "迁移账号"@"%" identified by “迁移密码”给迁移账号重新授权。这个命令中的迁移账号用真实的迁移账号替换,迁移密码用真实的迁移密码替换。授权后重新进行预检查
3. 源数据库安装服务器设置了防火墙 检测方法: 如果源数据库安装服务器为Linux,那么在shell中运行 iptables -L,检查服务器是否配置了防火墙。如果安装服务器为window,那么在控制面板中查找到Windows防火墙,查看是否配置了防火墙 修复方法: 先将防火墙关闭后,重新进行预检查
目标库连接性检查 检测数据传输服务器是否能够连通要迁移的目标数据库。数据传输服务通过JDBC协议创建到目标数据库的连接,当创建连接失败时,这个检查项即失败。
1. 创建迁移任务时,提供的账号或密码不正确 检测方法:在任何一台能够网络能够跟目标数据库互通的服务器上,使用创建迁移任务使用的账号/密码,通过客户端软件连接源数据库,确认是否能够正常连接。如果连接报错,且报错信息中含有Access deny,那么说明账号或密码有误 修复方法:在数据传输服务控制台修改迁移任务,将账号密码修改成正确的配置后重新预检查 2. 数据传输服务器与目标数据库网络不通 如果不是迁移账号密码不正确的话,那么可能是由于数据传输服务器跟目标数据库网络不连通,当处于这种情况时,请联系数据传输服务值班同学协助解决。
schema存在性检查 主要检查待迁移的数据库在目标RDS实例中是否存在。如果不存在,那么数据传输服务会自动创建。但是对于如下几种情况,自动创建数据库会失败,所以直接报预检查失败。 (1) 数据库名中含有小写字母、数字、下划线、中划线的其他特殊字符 当遇到这种情况时,预检查的失败原因为:迁移的数据库迁移库名的名称不符合rds规范 (2) 数据库的字符集不为utf8、gbk、latin1、utf8mb4中的一种 当遇到这种情况时,预检查的失败原因为:迁移的数据库迁移库名的字符集不满足rds的要求 (3) 目标库迁移账号无迁移库的读写权限 当遇到这种情况时,预检查的失败原因为:该用户没有权限使用库迁移库名 同名对象存在性检查 这个检查项主要检查目标库是否已经存在跟待迁移对象同步的对象。当这个检查项失败时,说明目标RDS实例中已经存在了跟待迁移的对象一样名字的对象,这会导致迁移失败。 当这个检查项失败时,失败原因为:目标库存在跟待迁移对象同名的结构对象:迁移库名。 约束完整性检查 这个检查项主要检查迁移的对象列表中,有外键依赖关系的父子表是否都被迁移,防止破坏外键约束完整性。 对于这种错误的修复方式为:
源库server-id检查 这个配置项只有当进行MySQL->MySQL增量迁移时,才会进行检查。这个检查项主要检查源数据库的server-id是否设置为大于1的整数。
源库binlog是否开启检查 这个配置项只有当进行MySQL->MySQL增量迁移时,才会进行检查。这个检查项主要检查源数据库是否开启binlog日志。如果检查项失败,那么说明源数据库没有开启binlog。
源库binlog模式检查 这个配置项只有当进行MySQL->MySQL增量迁移时,才会检查。这个检查项主要检查源数据库的binlog模式是否为ROW。如果检查失败,那么说明源数据库的binlog格式不为ROW。
源库binlog存在性检查 这个配置项只有当进行MySQL->MySQL增量迁移时,才会检查。这个检查项主要检查源数据库存在的binlog文件是否被删除。如果检查失败,那么说明源数据库的binlog文件不完整。
Mysql源库binlog_row_image是否为FULL 这个配置项只有当进行进行MySQL->MySQL增量迁移时,才会检查。这个检查项主要检查源数据库的binlog_row_image是否为full,即是否记录全镜像。如果检查失败,那么说明源数据库的binlog未记录全镜像。 federated类型的表的存在性检查 这个配置项只有当进行进行MySQL->MySQL增量迁移时,才会检查。这个检查项主要检查员数据库中是否存在增量迁移不支持的存储引擎。目前增量迁移不支持federated, mrg_myisam两种存储引擎。 当检查失败,且失败原因为:源数据库中存在引擎为FEDERATED的表时,说明源数据库中要迁移的部分表的存储引擎为federated,所以导致检查失败。 当检查失败,失败原因为:源数 据库中存在引擎为MRG_MYISAM的表时,说明源数据库中要迁移的部分表的存储引擎为mrg_myisam,所以导致检查失败。 当检查失败时,对于这些存储引擎为federated或mrg_myisam的表,修改迁移任务,将这些表从迁移列表删除掉。然后单独创建一个迁移任务,对这些表进行结构迁移+全量数据迁移。 本文中提到的产品 云数据库 云服务器 相关文章 |