开通地域 | | RegionId |
中国地域 | 华东2(上海) | cn-shanghai |
| 华北2(北京) | cn-beijing |
| 华南1(广州) | cn-guangzhou |
| 中国香港 | cn-hongkong |
海外地域 | 亚太东南(柔佛) | ap-southeast-1 |
| 亚太东南(雅加达) | ap-southeast-3 |
数据库类型 | 源数据库 | 目标数据库 |
MySQL |
|
|
评估项 | 评估内容 |
源实例 TDE 检查 | 检查源实例是否含有开启 TDE 加密的表。 |
源实例和目标实例版本 | 是否支持源版本向目标版本迁移。 |
源实例元数据读取权限 | 源实例账号是否可以查询 information_schema 库的数据。 |
查看源实例表定义的权限 | 源实例账号是否可以执行 show create table 语句。 |
查看源实例视图定义的权限 | 源实例账号是否可以执行 show create view 语句。 |
查看源实例可编程对象定义的权限 | 源实例账号是否可以执行 show create function/trigger/procedure 语句。 |
源实例日志读取权限 | 源实例账号是否可以执行 show binary logs 语句。 |
评估项 | 评估内容 |
源和目标实例时区是否一致 | MySQL 的 time_zone 参数用于设置数据库服务器的时区,控制时间函数(如 NOW()、CURTIME())的返回值及 TIMESTAMP 类型数据的存储与显示。若未显式指定,可能导致应用与数据库时间不一致。主从复制时需确保主从节点时区统一,避免 TIMESTAMP 字段因时区转换产生差异。支持全局或会话级配置,建议与应用时区对齐,确保时间数据处理准确可靠。 |
目标端默认字符集是否兼容源端 | MySQL 的 character_set_database 参数定义数据库的默认字符集,当新建表或列未显式指定时,自动采用该字符集存储数据。它影响数据写入、查询的编码方式,需与连接字符集等配置一致,避免乱码。若未显式设置数据库字符集,则继承此参数值,建议与全局字符集(如 utf8mb4)统一,确保数据兼容性与多语言支持。 |
目标端默认校验集是否兼容源端 | MySQL 的 collation_database 参数定义数据库的默认排序规则,用于指定字符比较、排序及索引的规则(如大小写敏感、重音处理等)。若未显式设置表或列的排序规则,则自动继承此值。需与字符集(如 utf8mb4)兼容,确保数据查询、索引优化的正确性,避免因规则不匹配导致结果异常或性能问题,建议与全局配置统一。 |
源和目标实例的表名大小写设置是否一致 | MySQL 的 lower_case_table_names 参数控制表名和数据库名的存储及比较方式:
用于解决跨操作系统(如 Linux 与 Windows)迁移时因文件名大小写敏感差异导致的表无法识别问题,需在初始化前配置,避免数据冲突。 |
源和目标的事务隔离级别是否一致 | MySQL 的 tx_isolation(现版本更名为 transaction_isolation)参数用于设置事务的默认隔离级别,控制事务间的数据可见性与并发冲突处理方式,如 READ UNCOMMITTED(读未提交)、REPEATABLE READ(可重复读)等。不同级别平衡数据一致性与并发性能,需根据业务场景调整,避免脏读、幻读等问题。建议结合应用需求与数据库负载配置。 |
源和目标的 InnoDB_strict_mode 是否一致 | MySQL 的 InnoDB_strict_mode 参数启用 InnoDB 存储引擎的严格模式,对 DDL 操作(如建表、修改表)进行更严格的语法和配置检查。若检测到不兼容选项(如无效行格式、索引键长度超限等),直接报错而非警告,避免潜在数据不一致或性能问题。建议开启以确保配置合规性,尤其在迁移或升级时防止隐式错误。 |
源和目标的 InnoDB_large_prefix 是否一致 | MySQL的 InnoDB_large_prefix 参数(5.7.7 + 默认启用)允许 InnoDB 表使用更长的索引前缀(最大 3072 字节),突破默认 767 字节限制,需配合 ROW_FORMAT=DYNAMIC 或 COMPRESSED 及 InnoDB_file_format=Barracuda。适用于 UTF8MB4 等多字节字符集的大字段索引场景,解决 “index column size too large” 错误。高版本中此参数已弃用,因默认支持。 |
源和目标的 log_bin_trust_function_creators 是否一致 | MySQL的 log_bin_trust_function_creators 参数用于控制是否信任存储函数或触发器的创建者,避免因函数未声明 DETERMINISTIC、NO SQL 等属性而报错。启用后(设为 1),允许非 SUPER 权限用户创建函数,但需确保函数逻辑安全,否则可能因非确定性操作导致主从复制数据不一致。建议仅在受信任环境中开启,或严格审核函数逻辑后使用。 |
源和目标的 event_scheduler 是否一致 | MySQL 的 event_scheduler 参数用于控制事件调度器的启停(ON/OFF/DISABLED),决定是否自动执行预定义的事件任务(如定时执行 SQL 语句或存储过程)。启用后(设为 ON),可周期性触发数据维护、统计等自动化操作;关闭时(OFF 或 DISABLED),所有事件任务暂停。需确保用户具备 EVENT 权限,且事件状态为 ACTIVE。适用于定时清理日志、数据备份等场景,需注意全局变量配置及资源占用问题。 |
源和目标的 sql_mode 是否一致 | MySQL 的 sql_mode 参数用于定义服务器执行 SQL 语句时的语法规则、数据校验及兼容性行为,通过调整模式组合可控制严格性、容错性及功能支持。常用模式包括:
合理配置 sql_mode 可确保数据一致性、避免隐式错误,但需注意不同 MySQL 版本的默认值差异(如 5.7 + 默认含严格模式)。建议根据应用场景明确设定,避免因模式变化导致迁移或升级时兼容性问题。 |
评估项 | 评估内容 |
源实例 binlog_format 是否为 row 格式 | MySQL 的 binlog_format 设为 ROW 时,二进制日志记录每行数据的变更细节而非执行的 SQL 语句,确保主从复制数据严格一致,避免因不确定性函数(如 NOW()、UUID())或触发器导致从库逻辑错误。此模式支持行级复制,减少锁冲突,但日志量较大,适用于对数据准确性要求高的场景。 |
源实例 binlog_row_image 是否为 full 模式 | MySQL 的 binlog_row_image 设为 FULL 时,二进制日志会记录修改行的全部列数据(变更前和变更后的完整行信息),确保主从复制时数据绝对一致。此模式适用于依赖完整行数据的场景(如触发器、外键约束或复杂存储过程),避免因部分列未记录导致的逻辑错误或恢复失败。虽增加日志体积,但数据安全性和可靠性更高,尤其对严格一致性要求的系统至关重要。 |
源实例 log_slave_updates 是否开启 | MySQL 的 log_slave_updates 设为 ON 时,从库会将主库同步的更新操作记录到自身二进制日志中,使该从库可作为其他实例的主库,支持多级复制架构(如链式或树状拓扑)。此设置确保级联复制中数据变更逐级传递,同时便于灾备或新增从库时直接基于该从库建立新复制链路,增强架构灵活性,但会略微增加从库的 I/O 及日志存储开销。 |
源实例 gtid_mode 是否开启 | 在源库的实例版本大于等于 5.6 时,需设置参数 gtid_mode 为 ON。 当 MySQL 的版本小于 8.0 且未开启参数 gtid_mode 时,可能会在数据迁移过程中导致外键级联删除失败,从而造成数据差异。 主库宕机时,从库通过 GTID 快速定位未同步事务,减少数据丢失风险。 |
源实例是否包含无主键表 | 无法保证数据一致性,目标端可能会多数据。 |
评估项 | 评估内容 |
迁移对象信息 | 表/视图/函数/存储过程/触发器/事件的数量。 |
表字符集和校验集是否兼容 | 目标端是否兼容源端表的字符集和校验集设置。 |
是否包含 Memory 引擎的表 | Memory 无法保证数据的完整性,实例重启或者切换主备节点时,表中的所有数据都会丢失。 火山 RDS 仅支持 InnoDB 存储引擎, 并且火山 InnoDB 做了很多内核优化,已具备明显的性能优势。 DTS 会自动将其转换为 InnoDB。 |
是否包含 MyISAM 引擎的表 | MyISAM 采用的是表级锁机制,而 InnoDB 采用的是行级锁机制,InnoDB 在通常情况下具备更高的写入效率。 MyISAM 对数据完整性的保护存在缺陷,这些缺陷会导致数据库数据的损坏甚至丢失。这些缺陷多为设计问题,无法在不破坏兼容性的前提下进行修复。 火山 InnoDB 做了很多内核优化,已具备明显的性能优势。 DTS 会自动将其转换为 InnoDB。 |
是否包含 MGRMyISAM 引擎的表 | 火山 RDS 不支持此引擎。 |
是否包含其他引擎的表 | 火山 RDS 不支持非 InnoDB 引擎,DTS 会自动转换为 InnoDB 引擎。 |
表名和列名是否包含 8.0 新增的关键词 | 如果表名或列名是 8.0 新增的关键词,使用 SQL 时,需要用 `` 引起来,否则在 8.0 版本会报语法错误。 |
评估项 | 评估内容 |
InnoDB 缓冲池大小 | InnoDB 缓冲池用于缓存表数据、索引及辅助结构,减少磁盘 I/O 操作,显著提升数据库读写效率。其大小通过InnoDB_buffer_pool_size 参数设定,直接影响数据缓存能力。建议设置为物理内存的 60%~80%(需预留系统及其他进程内存),过小会导致频繁磁盘访问,过大可能引发内存资源竞争。 |
实例连接数设置 | MySQL 的 max_connections 参数定义了数据库允许的最大并发客户端连接数。合理设置可平衡资源利用与并发需求:过低会导致连接请求被拒绝(如 “Too many connections” 错误),过高可能耗尽内存或 CPU 资源,引发性能下降。需根据服务器配置(内存、线程处理能力)及实际负载调整,并可通过连接池管理优化资源复用,避免频繁创建连接的开销。 |
ThreadRunning 活跃线程数 | 用于表示当前正在执行查询或事务的活跃线程数量,反映数据库的实时并发负载情况。该指标过高可能提示锁竞争、资源瓶颈或慢查询堆积,需结合其他状态参数优化连接池配置或排查性能问题。 |
源库当前 TPS 和 QPS 指标 | 当前每秒执行的更新数和查询数。 |
源实例数据空间大小 | 源实例所选库的数据空间和索引空间。 |
推荐的目标端规格 | 基于源实例以上性能指标,推荐满足条件的火山 RDS 规格。 |
评估项 | 评估内容 |
源实例数据空间大小 | 仅数据空间,不包含索引空间。 |
源和目标网络延迟 | 迁移任务所在的机器与源实例和目标机器的网络延迟,影响读取和写入的吞吐量。 |
预估 DTS 迁移速度 | 根据网络延迟、源和目标的性能参数配置,预估的迁移速度。这里没有考虑带宽等配置,实际迁移速度可能有所出入。 |
预估 DTS 迁移时长 | 根据当前表数据所占空间以及预估速度,计算的预估迁移时长,实际迁移时长会受源和目标机器性能、负载、带宽等影响。 |