DTS 支持在实际数据迁移前,对源数据库进行全面评估与分析包括实例状态、迁移任务依赖等进行预检查评估,提高数据迁移任务的成功率与效率,有助于提前识别并解决潜在问题、降低风险、控制成本,助力您高效且全面地从其他数据库迁移至火山引擎数据库,确保迁移过程顺利完成。
降低风险:通过预先评估并识别潜在问题,能够降低数据迁移过程中的风险,保障数据完整性以及迁移过程的平稳推进。
提高效率:对迁移时间及资源需求进行预估,有助于优化迁移流程,合理配置资源,提升迁移效率。
保障业务连续性:评估有助力选择最优的迁移时间窗口,最大程度减少对业务的影响,保障业务的持续开展。
成本控制:通过精准评估资源需求,能够有效控制迁移成本,避免资源的浪费。
源库数据分析及目标库配置推荐:上云前协助分析源库数据等信息,并给出目标库的配置推荐。
识别数据迁移障碍因素:提前找出会对数据迁移产生影响的障碍因素 。
解决兼容性问题:数据迁移评估能够检查源数据与目标环境在系统参数配置、时区、字符集等方面的兼容性,确保数据可顺利迁移,同时保障业务的正常运行。
推广期间暂不计费。
迁移评估任务基本不会对业务造成影响。
当前支持进行迁移评估任务的地域如下所示:
开通地域 | RegionId | |
---|---|---|
中国地域 | 华东2(上海) | cn-shanghai |
华北2(北京) | cn-beijing | |
华南1(广州) | cn-guangzhou | |
中国香港 | cn-hongkong | |
海外地域 | 亚太东南(柔佛) | ap-southeast-1 |
亚太东南(雅加达) | ap-southeast-3 |
数据库类型 | 源数据库 | 目标数据库 |
---|---|---|
MySQL |
| 火山引擎版 MySQL |
数据库传输服务 DTS 在进行迁移评估时,会从基本信息、系统配置、迁移依赖、对象兼容性、规格推荐以及迁移时长等评估类型开展评估工作。同时,对于存在评估风险以及未通过评估的项目,会提供具体原因说明。
评估项 | 评估内容 |
---|---|
源实例 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 的
用于解决跨操作系统(如 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 的
合理配置 |
评估项 | 评估内容 |
---|---|
源实例 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 时,需设置参数 |
源实例是否包含无主键表 | 无法保证数据一致性,目标端可能会多数据。 |
评估项 | 评估内容 |
---|---|
迁移对象信息 | 表/视图/函数/存储过程/触发器/事件的数量。 |
表字符集和校验集是否兼容 | 目标端是否兼容源端表的字符集和校验集设置。 |
是否包含 Memory 引擎的表 | Memory 无法保证数据的完整性,实例重启或者切换主备节点时,表中的所有数据都会丢失。 |
是否包含 MyISAM 引擎的表 | MyISAM 采用的是表级锁机制,而 InnoDB 采用的是行级锁机制,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 迁移时长 | 根据当前表数据所占空间以及预估速度,计算的预估迁移时长,实际迁移时长会受源和目标机器性能、负载、带宽等影响。 |