OceanBase迁移服务:向分布式架构升级的直接路径

2019年1月4日,OceanBase迁移服务解决方案在ATEC城市峰会中正式发布。蚂蚁金服资深技术专家师文汇和技术专家韩谷悦共同分享了OceanBase迁移服务的重要特性和业务实践。

蚂蚁数据库架构的三代升级史

在过去的十多年时间里,蚂蚁在整个基础数据库架构上一共经历了三代升级。第一代数据架构是构建在IOE的基础之上——IBM的小型机、Oracle的商业数据库,还有EMC的共享存储。基于第一代IOE架构的运维成本是非常高的,同时稳定性的挑战也是非常大的。随着业务的快速发展,这套架构已经完全没有办法适应业务发展的增速。

随之诞生的是第二代架构,第二代架构的主体是OE——也就是Oracle和EMC,加上蚂蚁自身的分布式中间件,解决了业务的水平和垂直的弹性能力。这一代架构其实伴随着蚂蚁走了很多年。

随着4G、5G时代的到来和金融的普及化,人们的生活越来越离不开移动支付,业务井喷式的发展给底层的数据库提出了更高的要求。这些要求包括更高的稳定性,快速恢复能力和极致的弹性能力等。

于是最终演进到了我们如今的第三代架构。第三代架构是由OceanBase为代表的金融级云数据库和分布式中间件所构成。

数据库架构升级的挑战

伴随着整个蚂蚁的发展,整个数据库的架构也仅仅演进了三代。这其中一个很重要的原因就是对于任何企业而言,整个数据库的架构升级都是一件非常有挑战的事情。

蚂蚁金服资深技术专家师文汇说道,用一个我们内部经常说的比喻,就是数据库的架构升级就好像是在给一个高速运行的飞机更换引擎。”

更换引擎的目的是为了拥有更好的动力,做更多技术上的创新。但是横亘在眼前的问题是,如何才能做到稳妥创新,保证驾驶中的飞机平稳顺利的运行,这其实是有非常大的挑战。

在过去三代架构的演进中我们可以看到,本质上每一代架构的迭代基本上都是以两到三年为周期,这其中会有非常高的人力投入和成本开销

第二个挑战就是从传统的商业数据库迁移到OceanBase数据库之上,我们如何保证迁移过程中以及迁移以后的稳定性

另外一个非常大的挑战就是数据质量,在金融企业里,数据承载的不仅只是钱,更承载了数以亿计用户的信任。所以数据一条不能丢,一条不能错,这是我们做数据库的底线

当然,包括兼容性问题和性能风险也给数据库的架构升级带来重重挑战。

OceanBase迁移服务:向分布式架构升级的直接路径

基于上述问题和挑战,同时经过蚂蚁十年数据库架构升级的先进经验,蚂蚁金服为客户打造了这款一站式数据迁移解决方案——OceanBase迁移服务(OceanBaseMigration Service,简称OMS)。

OMS的发展演进

OMS的演进是以业务为驱动,并且与OceanBase的架构升级和不断发展密不可分。

早在2014-2015年期间,蚂蚁主站上的一些核心业务,包括大家熟知的交易业务,支付业务和会员业务等,需要从Oracle迁移到OceanBase上。当时的OMS还是以一个工具类、模块化的形态支撑着这些项目。

所以在2015年我们开始对OMS的方案进行全面的调研,力求沉淀出通用的系统化的解决方案。

在2016年,OMS已经有了平台化的架构,引入了大规模编排的思想,将整个迁移特别是切换过程中繁琐易错的环节全部集成到平台。这一时期,OceanBase也完成了从0.5版本到1.0版本的架构升级,这一年OMS还支撑了网商银行、印度PayTM以及主站的核心业务升级到OceanBase 1.0版本。

到了2018年的时候,无论在基础功能层面还是任务编排层面,OMS都已经被打磨得日趋完善。今年OMS已经支持了蚂蚁森林,蚂蚁商户平台以及众多大量核心及非核心的业务从MySQL迁移到OceanBase之上。与此同时,在外部业务包括很多已经上线OceanBase的商业银行,也已经验证了使用OMS一键迁移到OceanBase的能力。

OMS的方案优势

OceanBase迁移服务其实主要解决了五个重要的问题。

1.负载回放验证:其中第一个核心的问题就是负载回放验证,通过采集源端数据库的SQL流量,在目标库OceanBase上回放,可以验证其在OceanBase上的功能是否兼容、性能是否出现问题等。同时基于蚂蚁DBA十多年的经验沉淀,OMS会为客户提供性能等方面的调优建议。

2.秒级数据校验:第二点就是数据校验,OMS有三层数据校验,可以做到秒级的延迟。举一个例子,比如说我们想把传统商业数据库替换成OceanBase,如果在迁移过程中任何一条数据出现了错误,在一秒钟内就可以快速发现。校验的延迟可以完全保证在一秒以内,根据蚂蚁线上的经验,大概在100-200毫秒之间。

3.分钟级即时回滚:第三点也是最重要的一点,就是OMS有随时回滚的能力,而且回滚是无损的。这也是我们前面所强调的稳妥创新的基石。

4.多种数据库类型支持:目前OMS支持源端数据库类型有Oracle、MySQL、OceanBase等等,支持全量迁移和增量数据同步。

5.一键完成迁移:整个数据迁移链路和回滚机制的搭建基本上都是通过一键操作完成,使用简便。

OMS的技术架构

OMS的核心方案其实非常简单,我们把OceanBase变成Oracle/MySQL的一个备库。

传统的商业数据库一般都是有主库和备库的:主库承担写的流量,如果主库出现问题,我们会把数据切到备库,然后通过OMS提供的一整套虚拟主备库的解决方案完成切换。比如原来Oracle有一个主库一个备库,然后OceanBase其实变成了一个虚拟的备库。

整个数据库架构的升级也会变得异常简单,简单到只是做了一个主备切换。回滚也会变得非常简单,其实也是做了一次主备切换。

从OMS的整体架构来看,其实一个非常关键的点就是,我们在传统的商业数据库和OceanBase之间建立了一套虚拟的主备链路,整个OMS里用到的所有组件,其实都是在蚂蚁和阿里有很多年技术沉淀的,也都是基于真实场景所产生的。

OMS的迁移流程

OceanBase迁移服务的整体迁移流程其实只有七步。

1.评估:首先第一步是通过负载回放工具做兼容性分析;

2.PoC:接下来OceanBase云平台可以帮助客户部署一套PoC集群;

3.预迁移:然后OMS把线上的Oracle的数据预迁移到一个测试库里;

4.验证:在这个测试库里用负载回放工具去回放这些SQL,然后找到SQL里不兼容,性能或者数据质量不满足预期的部分,并提供优化建议;

5.正式迁移:前四步做完了以后,业务需要调整或者需要优化的SQL已经完成优化,然后就可以正式迁移了。首先把原有的全量数据迁过来,然后再把增量变化的那部分数据实时同步过来;

6.校验:等到所有的数据准备好以后,然后我们继续完成三级校验;

7.切换和回滚:等到所有的校验都完成以后,可以一键完成切换和回滚功能。

通过这七步就可以轻松完成从传统商业数据库到分布式数据库的完整迁移。

蚂蚁商户平台基于OMS的业务实践

蚂蚁商户平台承载着商户档案数据信息,订购关系、签约信息的数据和相应的服务能力。其中一部分业务使用的是MySQL数据库,还有一部分核心业务使用的是Oracle数据库。

随着商户的快速增长以及业务场景的不断丰富,商户平台数据增长迅速,数据规模相当庞大。尤其是MySQL的单表瓶颈日益明显,DDL变更、DML更新的性能与风险已经无法承担。

蚂蚁金服技术专家韩谷悦介绍道,“OceanBase能够支持数据的无限扩展,满足商户业务的容量与性能需求。那么如果我们换一种数据库底盘,其实所要面对的性能、稳定性和数据质量的风险同样不可避免。”

从蚂蚁商户平台的业务实践来看,使用OMS迁移与传统迁移进行对比,我们可以看到:

· 业务评估和改造

过去通常一个业务少则花费1-2个月的时间去做改造和适配;那么基于OMS自动化的SQL兼容性评估和负载回放的能力,蚂蚁商务平台业务的改造大概只用了一个星期的时间。

· 数据迁移和校验

客观来讲,迁移的总时长主要取决于业务数据模型,数据量和网络环境。在提高迁移效率方面,OMS目前增量迁移的延迟仅为毫秒级,跨城情况下最长只需要3秒。并且针对校验出的数据差异提供补齐的SQL和订正方案,使得迁移和校验的整体效率有了大幅度的提升。

· 业务切换

其实在切换之前,往往需要制定严密的切流方案和Failover方案,整个切换过程中需要检查与校验的细节非常繁琐,任何一步疏忽都有可能造成数据不一致的问题。那么OMS通过引入大规模编排的思想,把所有繁琐复杂的环节通通落到平台当中。所以从原来业务切换需要用时1-2周时间, 使用OMS后蚂蚁商户平台业务无论是切读还是切写的过程中都只用了几分钟的时间。

· 业务回滚

在过去,迁移之后的业务回滚要担负重大的决策风险,OMS使得业务回滚就像一次主备切换,可以瞬间完成并且不丢数据,所以让业务回滚不再成为难题。商户业务整体迁移的过程中也发生过业务抖动,使用OMS回滚的时候从登陆系统到完成回滚也只用了几分钟的时间。

所以全程下来蚂蚁商户平台这个业务的迁移时间大概在三个多星期的时间完成,那么无论从人力成本还是时间成本上,OMS都极大地提升了数据库的整体迁移效率。

最后,韩谷悦为大家展示了OMS一键迁移的demo演示。

当前, 越来越多的企业已经认识到分布式架构在实现业务灵活扩展以及敏捷开发等方面的巨大价值。OceanBase不断通过产品端的革新,为传统企业输送“互联网基因”,帮助更多客户向分布式架构转型。

同时OceanBase也在不断提高服务客户的深度和广度。深度意味着在同样的业务场景下,随着业务的发展和体量的壮大,帮助更多企业承担起业务所带来的极致压力。广度则针对的是随着新型技术形态和业务场景的出现,帮助更多企业快速响应,通过技术创新而适应变化所带来的新的市场契机。

OceanBase致力于将蚂蚁自身业务多年沉淀下来的最浓缩,最经典和最普世的方法论输出给广大的企业客户,同时做到深度和广度并存,真正帮助客户实现稳妥创新

 

原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

被嫌弃的互联网的 “一生”(上)

戳蓝字“CSDN云计算”关注我们哦!作者 | 小灰责编 | 阿秃在人类的历史长河中,我们这一代人是最幸运的一代,因为我们生活在一个智慧飞扬的时代。这个时代最伟大的发明是什么?或许每个人心中都有不同的答案。在小灰看来,…

Mars 是什么、能做什么、如何做的——记 Mars 在 PyCon China 2018 上的分享

最近,在 PyCon China 2018 的北京主会场、成都和杭州分会场都分享了我们最新的工作 Mars,基于矩阵的统一计算框架。本文会以文字的形式对 PyCon 中国上的分享再进行一次阐述。 听到 Mars,很多第一次听说的同学都会灵魂三问:Mars …

Failed to bind properties under mybatis-plus.configuration.result-maps[0]

Failed to bind properties under mybatis-plus.configuration.incomplete-result-maps[0].assistant.configuration.mapped-statements[0].parameter-map.parameter-mappings[0] to org.apache.ibatis.mapping.ParameterMapping解决方案: 鉴于Spring Boot 2.2.0 和…

为什么要学Python 编程?(附Python学习路线)

为何程序员多数会选择 Python 作为入门级语言?在此,估计不少开发者都会予以反驳,自己明明就没有选择 Python,不能一概而论。下面,我们就用数据一窥如今最流行的编程语言。今年的 3 月份,国外招聘网站 Hacke…

“资源添加到Web应用程序[]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间”

解决办法&#xff1a; 在 /conf/context.xml 的 前添加以下内容&#xff1a; <Resources cachingAllowed"true" cacheMaxSize"100000" />

报告!这群阿里工程师在偷偷养猪

今天下午&#xff0c;期盼已久的阿里巴巴技术脱贫大会就要开始了。 很多人都知道&#xff0c;我们在1年前就投入100亿元人民币成立阿里巴巴脱贫基金。从教育到健康&#xff0c;再到女性、生态和电商扶贫&#xff0c;这五个方向分别由五位阿里合伙人直接牵头。 很多人不知道的…

七大新品集中亮相,腾讯云AI大数据全线升级!

近日腾讯云在北京举行大数据AI新品发布会。会上&#xff0c;腾讯云带来了在大数据与AI领域的最新研究成果&#xff0c;包括AI换脸甄别技术AntiFakes、腾讯星图以及企业画像平台等七大重磅新品&#xff0c;并对AI、大数据产品进行全线升级&#xff0c;致力于为用户带来更精细化的…

解决CentOS7本机时间与实际时间相差8小时的问题

查看当前日期时间&#xff1a; timedatectl删除原来的时间日期配置 rm -rf /etc/localtime链接指向新的时间日期配置 ln -sv /usr/share/zoneinfo/Universal /etc/localtime设置完成后查看当前时间日期&#xff1a; 如果不生效请重启 reboot

阿里开发者们的第15个感悟:做一款优秀大数据引擎,要找准重点解决的业务场景

2015年12月20日&#xff0c;云栖社区上线。2018年12月20日&#xff0c;云栖社区3岁。 阿里巴巴常说“晴天修屋顶”。 在我们看来&#xff0c;寒冬中&#xff0c;最值得投资的是学习&#xff0c;是增厚的知识储备。 所以社区特别制作了这个专辑——分享给开发者们20个弥足珍贵的…

解决vsftpd 读取目录列表失败的问题

文章目录1. 问题现象2. 解决方案(重启时效)3. 重启失效解决1. 问题现象 使用第三方FTP软件filezilla进行登陆&#xff0c;出现如下错误&#xff1a; 状态: 正在连接 192.168.1.6:21... 状态: 连接建立&#xff0c;等待欢迎消息... 响应: 220 (vsFTPd 2.2.2) 命令: …

阿里开发者们的第16个感悟:让阅读源码成为习惯

2015年12月20日&#xff0c;云栖社区上线。2018年12月20日&#xff0c;云栖社区3岁。 阿里巴巴常说“晴天修屋顶”。 在我们看来&#xff0c;寒冬中&#xff0c;最值得投资的是学习&#xff0c;是增厚的知识储备。 所以社区特别制作了这个专辑——分享给开发者们20个弥足珍贵的…

腾讯云全面更新数据智能服务全景图!

近日在腾讯云AI大数据新品发布会上&#xff0c;腾讯云副总裁王龙向听众全面介绍了当前腾讯云数据智能服务的全景布局。针对目前整体AI行业的发展趋势&#xff0c;他表示过去一招鲜的发展模式已经难以为继&#xff0c;取而代之的是真正能够产生价值的、端到端的、全面的AI解决方…

揭秘人工智能(系列):人工智能带来的网络安全威胁

历史表明&#xff0c;网络安全威胁随着新的技术进步而增加。关系数据库带来了SQL注入攻击&#xff0c;Web脚本编程语言助长了跨站点脚本攻击&#xff0c;物联网设备开辟了创建僵尸网络的新方法。而互联网打开了潘多拉盒子的数字安全弊病&#xff0c;社交媒体创造了通过微目标内…

支付宝工程师创造出了一个可以“拷贝”支付宝的神器

mPaaS是源于支付宝的移动开发平台&#xff0c;从最初的金融级移动开发平台&#xff0c;逐渐演进成集开发、测试、发布、分析、运营于一体的 App 全生命周期管理平台&#xff0c;服务了广发银行、12306、上海地铁等标杆级客户&#xff0c;帮助客户完成技术升级与业务增长。 “拷…

Kubernetes API 与 Operator,不为人知的开发者战争

如果我问你&#xff0c;如何把一个 etcd 集群部署在 Google Cloud 或者阿里云上&#xff0c;你一定会不假思索的给出答案&#xff1a;当然是用 etcd Operator&#xff01; 实际上&#xff0c;几乎在一夜之间&#xff0c;Kubernetes Operator 这个新生事物&#xff0c;就成了开…

面试编程岗,期望40K,为什么老板给我翻倍?

临近年底&#xff0c;互联网正在经历优化升级&#xff0c;不少公司出现了裁员新闻&#xff0c;也有很多人纷纷转型、跳槽。那么 IT领域内&#xff0c;什么样的工作比较好&#xff1f;最近笔者看笔者在网上看到一个被裁员的帖子&#xff0c;但仍被震撼到了&#xff0c;也许答案不…

linux上传下载文件命令rz、sz

要使用rz、sz命令传输文件需要给服务器安装lrzsz: yum -y install lrzsz命令sz、rz的使用方法 rz中的r意为received(接收)&#xff0c;输入rz时&#xff0c;意为服务器接收文件&#xff0c;即将文件从本地上传到服务器。 sz中的s意为send(发送)&#xff0c;输入sz时&#xff…

从概念到技术,打通「中台」的任督二脉,别再说不知道中台是什么

2019 年&#xff0c;「中台」这个词火了&#xff01;随着阿里等头部互联网企业搭建和推动中台业务&#xff0c;让越来越多的企业关注中台&#xff0c;纷纷提出「中台战略」&#xff0c;帮助企业自身加速实现数字化转型。不少企业还在观望「中台」&#xff1a;1、我的企业里需要…

Mars 如何分布式地执行

先前&#xff0c;我们已经介绍过 Mars 是什么。如今 Mars 已在 Github 开源并对内上线试用&#xff0c;本文将介绍 Mars 已实现的分布式执行架构&#xff0c;欢迎大家提出意见。 架构 Mars 提供了一套分布式执行 Tensor 的库。该库使用 mars.actors 实现的 Actor 模型编写&am…

maven编译 Process terminated【已解决】

在idea中打开了settings文件&#xff0c;找到提示的报错位置&#xff0c;删除或者调整即可