从 Oracle 到 TiDB,全链路数据迁移平台核心能力和杭州银行迁移实践

news2024/12/23 15:25:14

作者:邵健 杭州银行数据库专家 王辉 PingCAP

杭州银行在 TMS beta 阶段就进行了深度的测试体验,在过程中提供了大量的宝贵建议,帮助 TMS 进行了快速的优化和迭代。近期杭州银行借助 TMS 进行了多次 Oracle 生产数据库的迁移实践,以下内容由杭州银行数据库专家邵健撰写。

导读

平凯数据库(TiDB 企业版) 全链路数据迁移平台 TMS 为企业提供了从 Oracle 到 TiDB 的全流程数据迁移解决方案,包括对象结构迁移、数据全量迁移、数据校验等,大幅降低了迁移风险和成本。

本文介绍了 TMS 的核心功能,及其在 杭州银行的实践应用。通过与杭州银行的共创和打磨,TMS 在功能和操作体验方面得到了迅速的优化,最终成功帮助杭州银行实现了多套业务系统的平稳迁移,验证了其在实际生产环境中的高效可靠性。


分布式、云原生为代表的新技术的出现,为数据库技术实现弯道超车做好了铺垫。 伴随着数据使用场景的多元化,对于海量数据增长迅速、高并发读写、实时分析需求高的业务系统,传统经典商业数据库已经无法支撑,从敏捷开发迭代、技术自主掌控、业务连续性等角度进行评估,金融机构倾向选择国产分布式数据库实现架构的跃迁,从而在基础架构层面开辟自主创新的道路。

中国市场越来越多的企业级用户正在计划或者已经在把 Oracle 上的业务迁移到 TiDB,这个时候迁移方案、迁移步骤、迁移成本以及迁移过程中的风险成关注焦点。平凯星辰基于架构师和专业服务团队在企业级客户中迁移 Oralce 到 TiDB 的项目积累及实践沉淀,自主研发了全链路数据迁移平台(TiDB Migration Service,简称 TMS),从数据库的对象,到 SQL 的兼容分析,到迁移前后 SQL 执行性能的对比,再到存量数据的迁移,提供一套全流程的迁移工具和解决方案,帮助企业用户最大化降低迁移风险和成本。

TMS 简介

TMS(TiDB Migration Service) 是平凯数据库( TiDB 企业版)提供的全链路数据迁移平台,适用于从 Oracle 数据库迁移到 TiDB 的场景。TMS 主要包括应用对象兼容性评估、对象结构迁移、数据全量迁移、数据校验、应用 SQL 兼容性评估等核心模块,帮助企业用户低风险、低成本、高效率地完成从 Oracle 到 TiDB 的迁移。

TMS Web 控制台 :TMS 以 Web 控制台方式与用户交互,平台展示、功能服务管理、规则管理、任务参数、任务模板等都可以在 Web 端配置和启停,可查看日志/进度、查看运行结果、修复异常等。

图 1:TMS Web 控制台

TMS 功能架构 :TMS 的功能架构如下图所示,除了可视化控制台,还包括任务管理和迁移通道两层功能模块,用于解决数据库迁移中的任务管理需求和技术实现。

图 2:TMS 功能架构图

TMS 核心能力

多通道多任务管理 :TMS 设计目标是提供多种类型异构数据库的同时迁移,每个迁移项目内部支持并发多个任务,每个任务均支持按需配置,尽可能减少用户的二次开发工作,具备灵活的扩展能力,用户可根据实际情况勾选配置,创建迁移项目。

图 3:迁移数据源管理

图 4:迁移项目管理

对象迁移服务 :将源端数据库 (Oracle/MySQL) 中表类型、字段类型、缺省值、索引、主键等对象通过使用 TMS 配置源数据库与目标数据库的对象及语法映射规则、字段类型映射关系、字段缺省值映射关系、跨不同 schema 映射等自动转为 TiDB 的 DDL 语法,输出 DDL 脚本或者通过 TMS 批量自动在目标端 (TiDB) 端建立对应的表和对象等。

图 5:对象迁移任务管理

图 6:对象迁移任务汇总信息

数据迁移服务 :将源端数据库 (Oracle/MySQL) 中的数据迁移到 TiDB 中,迁移过程全程具备进度跟踪能力、断点继续、跨字符集、按需迁移部分数据、跨不同 schema 映射等能力。由于增量迁移技术门槛较高,当前版本支持静态全量迁移,从 (Oracle/MySQL) 到 TiDB 的增量迁移计划与第三方厂商合作完成。数据迁移根据数据量的大小和实际用户提供的服务器数量支持普通版和集群版两个版本,集群版基于分布式框架,以集群方式运行,可以调度和管理集群中所有服务器并发完成数据迁移的工作。

普通版本适用于百 G 级别数据量和硬件配置不高场景的数据迁移,集群版适用于 T 级别的数据量和硬件配置较高场景的数据迁移。

图 7:普通模式迁移任务管理

图 8:普通模式数据迁移服务任务详情

数据校验服务:高效地对比源端数据库 (Oracle/MySQL) 和 TiDB 目标端,两端每行的数据是否一致,在实际使用场景中,该任务模块的对比结论直接影响项目进度关键节点的决策,不仅要求性能高,而且结果要准确。因此,TMS 功能设计上同时支持以行方式数据对比和按业务逻辑方式对比两种方式,用户可以根据实际情况选择。

图 9:数据校验任务任务管理

图 10:数据校验任务详情

对象兼容性服务 :对于 Oracle/MySQL 迁移到 TiDB 的项目,在项目前期,通过 TMS 对源数据库进行对象兼容性评估,识别出支持与不支持的对象类型及个数、Oracle/MySQL 与 TiDB 的产品功能差异等,输出形式为 HTML 网页格式,以此为基础来辅助应用开发评估 Oracle/MySQL 数据库迁移到 TiDB 的对象兼容性、改造工作量、系统复杂程度、TiDB 适配难度等,为项目可行性评估、项目立项、项目成本评估等决策提供参考依据。

图 11:迁移对象兼容性评估报告

SQL 兼容性服务 :对于 Oracle/MySQL 迁移到 TiDB 的项目,通过 TMS 获取应用程序侧在 Oracle 生产环境实际执行过的应用 SQL 语句(包括 SQL 文本、BIND 变量值、执行计划、平均耗时等),并将这些 SQL 文本在 TiDB 测试环境回放,评估数据库对象迁移的完整性、业务 SQL 语法兼容性、执行计划性能等。

○ 识别出在 TiDB 执行不兼容的 SQL 语句列表,并区分环境问题或是语法兼容性问题。

○ 识别在 TiDB 执行成功的 SQL 语句,并分析执行效率相关的指标。

图 12:应用 SQL 语句兼容性分析报告

TMS 诞生于 Oracle/MySQL 等经典数据库向 TiDB 迁移的场景实践,从 TiDB 技术服务团队自用的迁移工具,到经过头部银行等几十个 TiDB 企业级用户的场景打磨,在功能演进过程中得到了众多用户在生产环境的深入反馈,TMS 是 TiDB 技术团队和用户共创的成果,成为企业用户从经典数据库向 TiDB 升级的必备工具。作为平凯数据库( TiDB 企业版)的重要模块,TMS 将持续进行功能优化,帮助企业用户更快、更稳地实现数据架构的跃迁。

TMS 在杭州银行的实践与联合探索

在当前国产化数据库替换背景下,杭州银行很多系统开始尝试使用国产数据库是大势所趋,用好国产数据库的前提是可以高效且准确地把上游异构数据库平滑地迁移到下游国产数据库。随着杭州银行对 TiDB 数据库应用的逐步加深,如何将异构数据库的数据和对象高效、准确地迁移至 TiDB 集群,已经成为行内重点关注的课题。异构环境的数据库迁移缺少成熟的工具体系,迁移复杂度较高。

TMS 产生第一个 beta 版本后,杭州银行成为 TMS 最早的试用用户,启动了相关测试验证工作。在使用初期遇到一些问题,如字符集转换、运维操作便捷性等方面, 反馈给 TMS 研发团队后,这些功能都实现了快速的迭代。在测试过程中,TMS 研发团队也始终跟杭州银行技术团队保持着密切的沟通互动,多次到现场进行调研分析,问题反馈评审最密集的时候 TMS 一周迭代两到三个版本,而且每个版本在功能和操作体验方面都得到了改善。

杭州银行对 TMS 数据迁移的主要功能模块都进行了深度的测试。对象兼容性评估可以从整体评估源端对象到 TiDB 的兼容性,从而得出改造的工作量、复杂度、兼容度、以及可行性风险。SQL 兼容性评估可以回放从源库捕获的 SQL 进行性能和兼容性评估。对象迁移根据源与目标对象之间的对象类型映射关系进行对象、表结构、索引等的迁移,迁移过程中可以按需自定义不同字段类型的映射关系。全量数据迁移提供静态全量数据迁移,后续还支持增量数据迁移,CSV 格式的导入、自定义源端和目标端字符集、源端与目标端重命名迁移等新功能,整个迁移过程具备可观测性,支持人为介入和断点续传。数据比对功能可以对源端和目标端进行数据比对,对于不一致数据会提供手动和自动修复的能力。

2023 年 7 月初,TMS 相对比较完善,试用过程中已经没有明显的功能性问题,杭州银行开始使用 TMS 承担一般业务系统的 Oracle 到 TiDB 的迁移割接。目前,杭州银行已经借助 TMS 在 8 套业务系统中完成了从 Oracle 到 TiDB 的迁移,近期外围系统的一次迁移涉及 300 多张表,约 50GB 数据量,且目标的 TiDB 库是在线业务库。鉴于目标的 TiDB 库在线承载了生产业务,DBA 设置了较低的并发确保迁移不影响目标库的在线业务,约 1 小时完成迁移工作,整个迁移过程 TiDB 集群原有的生产业务运行平稳,没有产生性能抖动。

我们在实践中总结了几个 TMS 的使用技巧,希望可以帮助更多的同行用好 TMS。在通过创建的时候,TMS 支持 schema 名称映射。在数据迁移的时候,选择迁移对象支持 CSV 导入,迁移对象支持引用不同任务的迁移对象,可以快速配置相似任务。需要注意源端和目标端的字符集配置,避免乱码。在迁移过程中的数据比对,支持加 where 条件过滤上游数据,可以有选择性的进行数据迁移处理。

使用 TMS 将 Oracle 迁移到 TiDB 替代了原先手工加多种工具组合的迁移方式,整个迁移过程实现了白屏化,大幅度降低了使用门槛,提升了迁移效率,保障了迁移的可靠性。感谢 TMS 研发团队,他们能够深入客户现场调研用户需求和关注使用体验,对产品进行快速迭代,短短的几个月时间,从 0 到 1 完成了 TMS 的研发和打磨,大幅度提升了数据迁移效率和可靠性。在此,我们也对 TMS 后续的迭代提几个建议:第一,希望提供持续增量复制迁移能力;第二,从风险角度考虑,提供系统回退迁移的能力;第三,不断完善支持更多的异构数据库,例如 DB2 等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1275783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双远心镜头:让视觉检测更精准、高效!

工业镜头是视觉系统中的重要组件,工业镜头的选型影响着整个系统的成像效果。在做视觉检测时,会遇到无法检测空间物体、无法控制视场变化、无法控制图像扭曲、对比度低、畸变大、反光等问题,这时普通的工业镜头并不能有效地解决问题&#xff0…

Electron+Ts+Vue+Vite桌面应用系列:TypeScript常用系统目录文件处理工具

文章目录 1️⃣ TypeScript操作电脑目录和文件1.1 获取磁盘信息1.2 获取目录下所有文件夹和文件1.3 新建文件夹1.4 新建文本1.5 重命名1.6 删除文件夹1.7 删除文件1.8 打开系统文件或系统文件夹1.9 根据字节转换文件大小带单位 优质资源分享 作者:xcLeigh 文章地址&…

JOSEF约瑟 剩余电流保护器 CLJ3-100A+LH30 导轨安装

CLJ3系列剩余电流动作继电器 系列型号: CLJ3-100A剩余电流动作继电器 CLJ3-250A剩余电流动作继电器 CLJ3-400A剩余电流动作继电器 CLJ3-630A剩余电流动作继电器 LH30剩余电流互感器 LH80剩余电流互感器 LH100剩余电流互感器 LH140剩余电流互感器 一、产品概…

Linux5-计划任务、进程

计划任务 一、cron 计划任务 周期性计划任务 cron 任务概述 • 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务 • 软件包:cronie、crontabs • 系统服务:crond • 日志文件:/var/log/crond 管理计划任务策略 • 使用 cro…

Leetcode—1657.确定两个字符串是否接近【中等】

2023每日刷题(四十五) Leetcode—1657.确定两个字符串是否接近 算法思想 源于灵神 实现代码 class Solution { public:bool closeStrings(string word1, string word2) {int len1 word1.size();int len2 word2.size();if(len1 ! len2) {return fa…

【note: This is an issue with the package mentioned above, not pip.】

安装gym时出现问题,note: This is an issue with the package mentioned above, not pip. 报错原因: 缺失了某些依赖模块,所以安装报错。 Collecting package metadata (current_repodata.json): done Solving environment: failed with in…

阿里云新版公共实例从注册账号到创建设备生成参数教程

1 注册阿里云 打开阿里云官网,点击右上角的登录/注册 打开的界面按照图片输入手机号注册 注册成功后,登录返回第一次打开的界面,点击控制台 点击控制台后界面如下 点击左上角的菜单,弹出新窗口,搜索物联网平台 开通物…

分治算法——75. 颜色分类

文章目录 🌿0. 分治🌻1. 题目🌼2. 算法原理🌴3. 代码实现 🌿0. 分治 分治分治,顾名思义分而治之,将一个大问题转换成若干个子问题,再将这些子问题的基础上继续划分成更小的子问题&a…

springboot+java校园自助洗衣机预约系统的分析与设计ssm+jsp

洗衣服是每个人都必须做的事情,而洗衣机更成为了人们常见的电器,但是单个洗衣机价格不菲,如果每人都买,就会造成资源的冗余。所有就出现了公用设备,随着时代的发展,很多公用都开始向着无人看守的自助模式经…

centOS使用docker部署ElasticSearch和Kibana

一、docker部署ElasticSearch 1、创建网桥 docker network create xybnet 2、下载镜像 docker pull elasticsearch:8.2.0 3、先运行容器 docker run -d \ --name es \ --net xybnet \ -p 9200:9200 \ -p 9300:9300 \ -p 5601:5601 \ -e "discovery.typesing…

笔记二十四、剖析Redux的工作流程

24.1 定义 用做于状态管理的第三方 js 库react框架中使用,也可应用于其他的框架 使用场景 组件间需要共享状态和改变另一个组件的状态在react项目中可以不使用就尽量不用,复杂场景下才使用 24.2 原理图 24.3 代码 安装 yarn add reduxjs/toolkit rea…

【linux】/etc/security/limits.conf配置文件详解、为什么限制、常见限制查看操作

文章目录 一. limits.conf常见配置项详解二. 文件描述符(file descriptor)简述三. 为什么限制四. 相关操作1. 展示当前资源限制2. 查看系统当前打开的文件描述符数量3. 查看某个进程打开的文件描述符数量4. 各进程占用的文件描述符 /etc/security/limits…

软著项目推荐 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像风格迁移 - opencv python 该项目较为新颖,适合作为竞赛课题…

JDK21无法导入TimeUnit类

运行环境:windows11、IDEA2023.1.3、JDK21 问题描述:IDEA中无法导入java.util.concurrent.TimeUnit类。 以下截图是问题解决后的截图。有问题的时候未截图,说明一下,有问题的时候TimeUnit类是红色的,无法导入&#x…

ipa应用测试平台怎么开开具发票

控制台-个人中心-发票管理 ●点击申请发票可以开具发票 ●申请发票-填写资料-勾选订单 ●个人发票开具以及公司发票开具 ●提交发票申请 ●等待申请成功开具发票 ●发票开具成功,我们可以开具或者查看发票

什么是死锁?如何产生死锁?死锁的必要条件?怎么解决死锁?

🔒1、什么是死锁 死锁是一个非常让程序猿烦恼的问题,一旦所写的程序有了死锁,那么程序就无法执行下去,会出现严重的 bug,并且死锁非常隐蔽,我们不会轻易发现它,在开发阶段,不经意期间我们就会写出死锁,很难检测出来。 那么什么是死锁呢?竟然让我们如此烦恼。 “死…

C语言:写一个函数,输入一个十六进制数,输出相应的十进制数

分析: 当用户运行该程序时,程序会提示用户输入一个十六进制数。用户需要在命令行中输入一个有效的十六进制数,例如:"1A3F"。 接下来,程序调用了名为 xbed 的函数,并将用户输入的十六进制数作…

TCP_握手+挥手过程状态变化分析

TCP状态解读 握手挥手过程状态变化 同时握手 双发同时发起syn请求,状态变化过程如下: 图片来源:http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh-4.htm 同时挥手 4次挥手,可以理解为2…

oops-framework框架 之 创建项目(二)

引擎: CocosCreator 3.8.0 环境: Mac Gitee: oops-game-kit 构建 本篇博客将使用oops-game-kit 构建一个新的开发项目, 关于 oops-framework 框架的了解,可参考上篇博客: oops-framework框架 之 初始了解(一) 大概…

WordPress:解决xmlrpc.php被扫描爆破的风险

使用WordPress的朋友都知道,一些【垃圾渣渣】会利用xmlrpc.php文件来进行攻击,绕过WP后台错误登录次数限制进行爆破。虽然密码复杂的极难爆破,但及其占用服务器资源。 方法一、利用宝塔防火墙(收费版) 一般可以直接使…