迁移评估
更新时间:2025-06-20
概述
为了确保数据迁移过程顺畅高效,GaiaDB提供了迁移评估功能,可在迁移前对数据库实例配置、任务依赖项及源数据特征进行全面诊断,提前识别并解决可能影响迁移进度的各类问题,从而显著降低迁移过程中的时间成本和资源消耗。
若评估中发现异常情况,请参考本文档提供的解决方案进行处理。
前提条件
- 已购买RDS实例
- 支持的地域:华北-北京、华北-保定、西南-成都、华南-广州、华东-苏州、华中-武汉
影响
迁移评估不会对业务造成影响。
创建迁移评估任务
- 登录云原生数据库GaiaDB控制台。
- 在 GaiaDB 控制台的左上角,选择要迁移的RDS实例所在的区域。
说明:当前一键迁移仅支持相同地域迁移,例如:北京地域的RDS实例迁移至北京地域的GaiaDB实例。
- 创建迁移评估任务。GaiaDB 提供了三种创建评估任务的入口。
- 入口一: 在”云原生数据库GaiaDB 列表“页面,点击迁移评估按钮。
- 入口二: 在”迁移管理“页面,点击迁移任务按钮。
- 入口三: 在”创建集群“页面,点击从RDS迁移的创建方式,并且配置源RDS版本、源RDS实例和数据库引擎后,单击迁移评估按钮。
- 填写迁移评估任务的相关参数,配置完成后点击发起评估。参数说明如下:
参数 | 说明 |
---|---|
源RDS版本 | 将迁移的RDS实例的MySQL版本,例如:MySQL 8.0,MySQL 5.7,MySQL5.6 |
源RDS实例 | 将迁移的RDS实例ID,下拉选择对应版本可迁移的RDS实例。注:若RDS实例已经迁移过,将无法选择 |
目标GaiaDB引擎版本 | 迁移后GaiaDB的MySQL版本,例如:MySQL 8.0,MySQL 5.7 |
说明:
- 若RDS实例已经进行过迁移,将无法选择;
- 不支持源实例MySQL版本大于目标集群MySQL版本;
- 可选的源实例列表不包含代理和只读实例。不影响源实例的正常运行。如果查询不到“源RDS实例”信息请尝试切换“地域”查找源RDS实例。
- GaiaDB将验证源RDS实例的主键等影响迁移顺利进行的检查项。请根据评估结果处理对应的问题。
- 单击前往购买按钮,前往创建集群页进行后续步骤。
管理迁移评估任务
对于已经创建的评估任务,您可以前往迁移管理页面查看评估详情。若评估完成,可以进行重新评估或前往购买。
说明:创建的迁移评估任务有效期为7天,到期后将自动删除。若您的迁移评估任务已到期,您可重新创建新的评估任务。
常见问题及解决办法
检查项 | 校验失败的处理方法 |
---|---|
检查源数据库是否存在不支持迁移的结构对象 | 源数据库创建了触发器,请先删除触发器,否则将导致迁移中断。提示信息例如:检测到以下 trigger 和 event:trigger_db .grafana_insert ,trigger_db .grafana_update ,trigger_db .grafana_delete ,DTS 目前尚不支持 trigger 和 event 的迁移,请悉知!您可以执行以下语句删除触发器: -- 查看有哪些触发器 SHOW TRIGGERS; -- 选择执行删除触发器。DROP TRIGGER trigger_name; |
检查迁移表是否存在不支持迁移的存储引擎 | 不支持表存储引擎类型为MyISAM,建议去掉不支持迁移的表或目标端建议开启no_engine_substitution,支持自动转存储引擎 |
检查迁移对象是否存在主键 | 源RDS实例存在没有主键的表,同步数据后可能会导致目标数据库中出现重复数据。您可以通过在源RDS实例上通过高权限账号连接数据库,查询没有主键的表添加主键。或者您可以忽略此项结果。 |
检查源数据库的binlog格式是否符合要求 | 要求源端RDS参数binlog_format参数为ROW,binlog_row_image参数为FULL,binlog_row_value_options参数不可为 PARTIAL_JSON |
检查源数据库的binlog是否被删除 | 要求源端存在Binlog,无Binlog不可发起迁移同步 |
检查源数据库的版本号 | 不支持MySQL版本低于5.1的RDS实例迁移,需升级MySQL到5.1及以上版本 |
检查源数据库是否设置server_id且值大于1 | 要求源端实例的server_id参数大于1 |
检查源数据库RDS实例类型是否满足迁移要求 | 源端仅支持主实例,只读实例在该场景下不支持1 |
如有其他问题,建议提交工单专业工程师在线回答问题。
MySQL版本升级兼容性
以下是MySQL 5.6→5.7→8.0各版本升级的兼容性问题对比,建议您分阶段升级。
一、MySQL 5.6 → 5.7 兼容性变更
1. SQL语法与功能
变更点 | 5.6行为 | 5.7影响 |
---|---|---|
ONLY_FULL_GROUP_BY | 默认关闭 | 默认启用,严格模式下GROUP BY 必须包含所有非聚合列,否则报错。 |
隐式字段类型转换 | 允许宽松转换(如字符串转数字) | 严格模式下转换失败会报错(如WHERE col = 'abc' 对数值类型列)。 |
子查询优化 | 依赖临时表 | 优化为物化查询,性能提升但可能影响旧查询计划。 |
2. 存储引擎
- MyISAM默认禁用
InnoDB成为默认引擎,MyISAM表在复制环境中可能出现问题(如自增ID不同步)。
3. 安全与认证
- 密码验证插件
新增validate_password
插件(默认强度中等),要求密码长度≥8且包含多种字符类型。
二、MySQL 5.7 → 8.0 兼容性变更
1. SQL语法与功能
变更点 | 5.7特性 | 8.0影响 |
---|---|---|
窗口函数 | 不支持 | 新增OVER() 、RANK() 等窗口函数,旧语法可能冲突。 |
JSON函数优化 | 基础支持 | 新增JSON_TABLE() 等函数,性能提升但部分旧函数行为调整(如JSON_EXTRACT )。 |
默认排序规则 | utf8_general_ci |
改为utf8mb4_0900_ai_ci ,字符集兼容性需重新验证。 |
2. 系统表与权限
- 角色功能
新增角色管理(CREATE ROLE
),替代复杂的手动权限分配。
三、MySQL 5.6 → 8.0 跨版本升级注意事项
1. 直接跳过5.7的风险
- 系统表结构差异
5.6→8.0需通过mysql_upgrade
自动修复,但复杂表结构(如分区表)可能迁移失败。 - 复制兼容性
5.6的STATEMENT
格式二进制日志在8.0中需转为ROW
格式,可能导致复制中断。
2. 关键功能缺失
- 窗口函数依赖
若应用代码中使用模拟窗口函数的复杂子查询,升级后需替换为标准语法。 -
密码策略
8.0的密码验证插件比5.7更严格,需调整密码复杂度规则:SQL1SET GLOBAL validate_password.policy = LOW;
四、升级建议路线图
建议在使用此功能升级版本前,先通过RDS克隆备份实例至测试环境验证所有应用功能,并使用MySQL 8.0的兼容性视图(SHOW VARIABLES LIKE '%compat%')来平滑过渡。
五、兼容性测试清单
-
SQL功能验证
- 执行含
GROUP BY
、子查询、JSON操作的关键SQL。 - 检查日期时间函数(如
STR_TO_DATE
)对非法值的处理。
- 执行含
-
性能对比
- 使用
EXPLAIN
对比升级前后查询执行计划。 - 压测高并发场景,监控性能指标。
- 使用
-
安全审计
- 验证用户权限是否正确迁移(
SHOW GRANTS FOR 'user'@'host'
)。 - 检查密码策略是否符合业务需求。
- 验证用户权限是否正确迁移(