趋势与挑战
随着数据使用场景的多元化,对于海量数据高并发读写、实时分析需求高的系统而言,经典商业数据库已经无法满足要求。从敏捷开发迭代、技术自主掌控、业务连续性等角度评估,国产分布式数据库 TiDB 成为理想之选。
越来越多的企业级用户正在计划或者已经在把 Oracle 上的业务迁移到 TiDB,这个时候迁移方案、迁移步骤、迁移成本以及迁移过程中的风险成关注焦点。PingCAP 基于架构师和专业服务团队在企业级客户中迁移 Oracle 到 TiDB 的项目积累及实践沉淀,提供一套全流程的迁移解决方案和工具,帮助用户最大化降低迁移风险和成本。
解决方案
迁移流程图
基于 PingCAP 服务实施过程的标准迁移实施过程,Oracle 数据库迁移到 TiDB 的迁移流程如下:
关键步骤
应用表结构需重构 | 应用表结构不需要重构 | |
---|---|---|
步骤 1 | 迁移前需要准备 Oracle 中转库,所有的表结构重构和重构前后的数据转换都在中转库中完成,此时 Oracle 库与中转库之间持续保持增量数据同步,对于增量数据,中转库根据特定的业务字段识别,在中转库内实现增量数据的转换,对于业务无明确识别增量数据字段的情况,则直接通过 TMS 该表的全量迁移,迁移完成后进行数据校验。 | 使用 TMS 将 Oracle 表结构和数据直接全量迁移到 TiDB 数据库中,并完成数据校验。 |
步骤 2 | 在中转库完成增量数据重构后,使用 TMS 完成从中转库到 TiDB 的表级别增量数据的全量迁移,迁移完成后,使用 TMS 的表级别增量数据校验功能完成数据校验。 | 根据实际需要,通过 TiCDC+第三方增量同步工具实现 TiDB 到逃生 Oracle 的增量同步链路,实现业务迁移到 TiDB 后的,如遇到突发问题,应用可以继续运行在新的表结构下的 Oracle 环境。 |
步骤 3 | 根据实际需要,通过 TiCDC+第三方增量同步工具实现 TiDB 到逃生 Oracle 的增量同步链路,实现业务迁移到 TiDB 后的,如遇到突发问题,应用可以继续运行在新的表结构下的 Oracle 环境。 |
TMS 简介
TiDB migration service,即 TiDB 迁移服务 。包括以下几个核心功能:
- 对象兼容性评估:通过获取 Oracle 对象元数据,评估从 Oracle 迁移到 TiDB 的对象兼容度,应用改造工作量,对象复杂度,技术可行性及实施风险等。
- SQL 兼容性评估:通过实时捕获 Oracle 源库的业务 SQL,并在 TiDB 回放 SQL,评估 SQL 兼容性及性能。
- 对象迁移:根据 Oracle 源与 TiDB 目标数据库之间的对象类型兼容性映射关系,列映射兼容性关系等,迁移表和索引,并自动对列长度,精度及列类型进行转换。
- 数据全量迁移:通过并行多任务方式完成 Oracle 源库到 TiDB 数据库的静态全量迁移。
- 数据比对与修正:将 Oracle 源与 TiDB 目标的数据库的数据进行一致性校验,对于不一致的数据进行数据修复。
- 统计信息管理:目标端 TiDB 数据库快速完成统计信息收集。
核心组件与能力
TMS Web 控制台
TMS 以 WEB 控制台方式与用户交互,实现用户对功能管理的可视化操作。包括:平台展示,数据源管理,数据迁移配置于管理,数据迁移任务的管理,规则管理,模版管理等。
对象迁移服务
由于 Oracle 的 DDL 与 TiDB 的 DDL 的语法存在差异,将 Oracle 的表结构和索引等对象迁移到 TiDB,需要对 DDL 进行转换。对象迁移服务将上述过程,通过语法映射规则、列类型映射规则、默认值映射规则、schema 映射等转为 TiDB 的 DDL 语法,在目标端 (TiDB) 端自动建立对应的表和对象等。
任务配置阶段,支持用户配置任务参数、列类型映射规则、表默认值规则。对于 Oracle 的分区表,可以通过配置转换为 TiDB 支持的分区表。在 TiDB 侧,支持创建聚簇表和非聚簇表。
任务运行完成后,用户在详情页可以查看任务执行汇总和明细,用户还可以在详情页下载全部 DDL 和失败的 DDL。对于 DDL 转换失败的条目,TMS 提供在线修复和重试功能。
数据迁移服务
将 Oracle 数据库中的数据迁移到 TiDB 是一个全面且复杂的过程。完整的迁移过程包括进度跟踪、断点续传、跨字符集迁移、按条件部分数据迁移以及跨不同 SCHEMA 映射等功能。
在迁移模式方面,我们支持 SQL(流式)迁移和 CSV 文本直接导入迁移,以适应不同的迁移场景和实际需求。尽管当前版本仅支持静态全量迁移,但针对源端 Oracle 数据库到 TiDB 的增量迁移未来将与第三方厂商合作完成,以实现增量迁移数据的功能。
为了提高迁移效率,我们还提供了 TMS 集群迁移的能力,使数据迁移更加快速。这一系列功能的整合旨在确保数据库迁移过程顺畅高效,以满足用户需求并最大程度地简化迁移操作。
数据校验服务
主要目标是高效地基于表内容对比源端数据库 Oracle 和目标端 TiDB 数据库,确保源端和目标端每行的数据一致性。在实际使用场景中,该任务模块的对比结论直接影响到项目进度关键节点的决策。因此,除了要求性能高,还需要确保对比结果的准确性。为此,TMS 在功能设计上提供了两种比对方式。其中,以行方式数据对比将检查每一行数据是否在源端和目标端匹配。在这种方式下 TMS 还可以进行行/列裁剪,根据裁剪后的表内容进行比对;按业务逻辑方式比对允许用户定义特定的业务逻辑规则进行比对,譬如某一列的总和或者校验和。用户可以根据实际场景情况选择比对方式。
对象兼容性服务
对于 Oracle 迁移到 TiDB 的项目,在项目前期,需要评估 Oracle 对象在 TiDB 中的兼容性。通过 TMS 的对象兼容性服务,抓取源数据库(Oracle)的数据字典,识别出兼容、可转换、不兼容的对象类型及数量,提供汇总信息和明细清单,输出为 HTML 格式的报告。以此为基础来辅助应用开发评估 Oracle 数据库迁移到 TiDB 的对象兼容性、改造工作量、系统复杂程度、TiDB 适配难度等,为项目可行性评估、项目立项、项目成本评估等提供决策参考材料。
SQL 兼容性服务
对于 Oracle 迁移到 TiDB 的项目,通过 TMS 获取应用程序侧在 Oracle 生产环境实际执行过的应用 SQL 语句(包括 SQL 文本,BIND 变量值,执行计划,平均耗时等),并将这些 SQL 文本在 TiDB 测试环境回放,评估数据库对象迁移的完整性、业务 SQL 语法兼容性、执行计划性能等。
- 识别出在 TiDB 执行不兼容的 SQL 语句列表,并区分环境问题或是语法兼容性问题。
- 识别在 TiDB 执行成功的 SQL 语句,并分析执行效率相关的指标。
适用场景
TMS 适用于用户为应用开发 DBA、运维 DBA、应用设计人员等,主要适用场景为将 Oracle 数据库快速自动迁移到 TiDB 的数据库的项目实施全过程。
- 应用改造可行性评估阶段,通过 TMS 对象和 SQL 兼容性扫描评估功能,生成对象兼容性评估报告和 SQL 兼容性评估报告,应用开发人员可以快速判断应用改造可行性,复杂度及人力投入工作量。
- 测试验证实施阶段,通过 TMS 高效,便捷,自动化的完成结构迁移,数据迁移和数据校验等任务,为应用开发,功能测试,性能提供环境。
- 生产迁移实施阶段:通过 TMS 高效,便捷,自动化的完成结构迁移,数据迁移和数据校验,统计信息智能收集,大幅缩短投产迁移时间和降低人工操作引入的风险。
方案优势
- 事前,通过全面兼容性分析形成评估报告,明确整体改造工作量,提供潜在风险预警。
- 事中,提供丰富、高效易用的配置模板,支持多任务并行迁移,迁移效率提升数倍。
- 事后,配备数据快速校验和统计信息智能管理,以确保数据的准确性和行为可追溯。