“进击的数据库”——传统数据库上云三部曲-阿里云开发者社区

开发者社区> 数据库> 正文

“进击的数据库”——传统数据库上云三部曲

简介: 随着云技术的发展,传统数据库上云成为趋势。那么传统数据库如何上云?数据库上云又会为用户带来哪些好处呢?阿里云数据库又为用户提供了哪些便利的工具来帮助传统数据库上云呢?本文将带领大家一探究竟。
摘要:随着云技术的发展,传统数据库上云成为趋势。那么传统数据库如何上云?数据库上云又会为用户带来哪些好处呢?阿里云数据库又为用户提供了哪些便利的工具来帮助传统数据库上云呢?本文将带领大家一探究竟。

演讲嘉宾简介:
萧少聪(花名:铁庵),Postgres中国用户会创始人之一,2015-2017届轮任主席。阿里云高级数据库产品专家,主要负责云数据库RDS及PostgreSQL产品线。拥有多年开发、架构设计及项目管理经验,协助中国众多企业实现Oracle数据库到Postgres系列数据库的迁移。

以下内容根据演讲嘉宾视频分享以及PPT整理而成。

本次的分享主要围绕以下三个方面:
一. 数据库为什么要上云?数据库上云的优势何在?
二. 如何通过DTS进行同构数据库的迁移?
三. Oracle数据库上云的“秘密武器”

一.数据库为什么要上云?数据库上云的优势何在?

随着云技术的发展,数据库上云已经不是问题,但是如何上云才是最科学最安全的办法呢?如果只是把一个数据库下载下来,然后再上传到云上去,这种事情大家都会做。而阿里云则会提供很多工具来协助客户更加严密地完成上云。ApsaraDB已经发展了很多年,从只有一个MySQL5.1 到当前版本的发展历程中,阿里云团队对其做了非常多的优化。有兴趣的人士可以关注阿里云团队相应的诸如阿里SQL此类的开源项目。从这些开源项目中可以看到,阿里云团队不只是在使用数据库的代码,同时也把自己所做的优化也在github上公开出来,为数据库上云的发展做出了杰出贡献。
阿里云数据库的发展历史如下图所示:
76cd21ce9552337ae01939fbb8ce2f3ce74a8506

那么数据库为什么要上升到云这个层面?将数据库上云又有什么好处呢?举个例子,如下图,左侧是用户自行部署的IDC机房。为了把用户的系统扩展到更加安全的地方,可以在同一个城市中部署两个IDC机房,分别作主备服务器,这时候可能就需要用光纤连接两个IDC机房。但如果用户使用阿里云的服务,就可以在不增加任何费用的基础上享受阿里云搭建好的一条同城异地的光纤服务。当需要搭建地域级的数据库服务时,实现该操作可能需要长度数千公里的光纤,这是不切实际的。但是如果使用阿里云的服务,用户就可以使用DTS实现这一目的,需要做的只是在界面上点击几个按钮就可以实现。
d3dee91023941e5e0b62b3cc5f7511c195794b07

假设某一组的服务器出现地域故障,用户需要把数据切换到另外一个地区,怎么做呢?答案我想大家已经猜到了,也是在所提供的界面中点击几个按钮就可以完成该转换操作,十分便捷。如果在线下,没有云的支持,可能需要一大批专家在线上搭建和调试该数据库,这可能会耗时1个半月甚至更长的时间。但是今天在云上实现该操作可能只需要两三天的时间就可以完成POC测试,完全不需要花费一个月以上的费用,而是只需要花费两三天的费用就可以实现,大大降低了成本。
那么除了集群之外,云数据库还会为用户带来什么好处呢?假设客户突然需要做一个活动业务,这就需要服务器创建更多的只读节点,同样的,用户使用云数据库可以通过简单的几个按钮就创建出新的只读节点。有了只读节点以后,开发人员可能会纠结一个问题,应用程序需要知道什么样的部分写到主节点,什么样的内容从只读节点读取,而且还要考虑负载均衡。而代码开发人员没法做到为突发的增长几十倍负载的活动场景去更改代码。而只要用户购买了阿里云的只读实例,便能够使用其读写分离的扩展性功能,用户只需要换一个IP地址来申请一个读写分离的链接地址,系统就会自动地根据内容的类型对其进行节点的分配,而不需要更改用户程序。
9152f3dc91301b54e80675a36a7b339539e778fe

以双十一为例,给出两条成本曲线,如下图所示:
cad9a2ad64e6db05e9cd4f19d47ee57a7b6c44b8

假设资源需求的平均值是八核16G的规模,但是每年的业务可能都会经历一个峰值,在这个峰值处所需要的资源成本可能是32核128G。如果是线下自行搭建的传统数据中心,那么整年数据库的资源规格都要按照峰值来定,如此以来就会大大增加资源成本。但如果用户使用阿里云数据库的服务,就可以实现短期内数据库负载容量的动态调整。在活动之前可以进行多次压力测试,当活动进行时,用户可以将其实例弹性地升级到峰值所需的规格,以此来度过业务的高峰,之后便可以降低资源需求,降低业务成本。可能大家都听说过云计算,大家可能会认为这种短期扩容在云主机ECS上面会非常容易实现,不外乎就是内存和CPU的规格提升上去即可。但实际上,在数据库中不只是硬件部分规模的提高,当用户数据迁移时,需要保证所有的事务数据全部一致,这些事情如果作为线下的项目来进行管理的话,可能会需要一个多月的前期准备工作才能平滑地完成该任务,而现在选择使用阿里云数据库服务之后,其中数据库中所有的数据保障和连接的保障都会由阿里云的云数据平台帮助用户平滑地完成。这些便是云计算和云数据库的一些优点,正是因为这些便利之处才促使越来越多的用户选择了将数据库迁移到云上来完成业务。

二.如何通过DTS进行同构数据库的迁移?

那么用户该如何选择数据库的迁移方案呢?从下图中可以看到,这其中有两套方案可以选择。
94faca9e428152acca547452c4dba87857a7d6e6

一套是原生方案,这是用户通常使用的方案;另外一套是使用阿里云提供的一系列的迁移工具。对于原生方案,相信大家已经非常熟悉,比如用户可以将部分数据下载下来后再回滚就可以完成相应的迁移操作。这其中可能会产生一个停机时间,但好处是所有的数据和操作都是原生的,用户不需要考虑兼容性问题。而通过阿里云提供的迁移工具,用户可以实现几乎“零停机”的迁移。
下面主要内容来向大家介绍ADAM(亚当)和DTS,在介绍它们之前,首先介绍一下SQL Server的迁移上云。在最新的SQL Server的版本中,已经支持了将SQL Server Management Studio生成的备份数据上传到OSS上以利用其优良的功能和性能,用户只需要在阿里云数据库SQL Server控制台上简单地点击按钮就可以完成数据的迁移操作。接下来介绍数据传输服务DTS,它可以实现数据库的平滑迁移。其原理是将原数据端的日志log提取出来,持续回滚到目标数据库中,通过这种方式来使整个迁移之前的数据库停机时间缩短到最低限度。同时DTS可以做的不只是数据迁移,它也可以用作数据的同步和分发。目前DTS支持的数据库类型繁多,针对这些类型的数据库,用户可以使用DTS实现全量数据的迁移,增量数据的同步。
有了这些工具以后,用户该如何落地实施数据库的迁移上云呢?首先介绍一下DTS进行“0“停机数据迁移的基本流程: DTS首先会帮助用户作表结构的迁移,重建一个云上的数据库;第二步DTS会把原数据库作一次全量的迁移;第三步DTS会持续感知原数据库所有的增量数据,包括UPDATE,DELAY,INSERT等数据在内,抓取到这些数据之后,DTS会将这些数据持续地同步到目标数据库。在此过程中,用户的原始业务数据库无需停机,即用户的生产系统在持续运行,直到原数据库的数据追赶增量的数据达到两侧平衡之后,用户可以选择夜晚低峰值时间段停机3到5分钟来完成整个数据从IDC机房到阿里云的迁移工作。在此之前,用户可以使用阿里云提供的相关服务对目标数据库进行多方面的压测、验证和功能等而不影响原数据库的运行,保证整个业务迁移过程的平滑进行。使用DTS进行迁移的操作十分简单,如下图所示:
2442ebec47f87840a19e44f15587dc7e0de48350

首先选择一个原数据库和一个目标数据库,然后选择需要迁移的database,如果在迁移前的初始校验过程中出现任何问题,DTS服务系统会提示用户迁移失败并显示出相应的失败原因。
当用户的数据库迁移到阿里云之后,用户最关心的问题是数据库上云之后的性能是否更加优良和稳健。因此阿里云服务提供了许多性能分析的功能,这些功能通常被称作Cloud DBA。通常所说的DBA每天在做的事情是备份数据、拷贝数据、安装数据库和优化数据库等枯燥的工作。如下图所示,使用Cloud DBA,用户通过点击一键诊断就可以获取直观的表格信息,方便其对迁移到云上的数据库进行分析和管理。
50a3e71f589712ded7f28e968f55229315189bbe

三.Oracle数据库上云的“秘密武器”

现在设想一个场景,本地有一个Oracle的数据库,用户将其迁移上云时考虑到成本压缩可能会选择不同类型的数据库,这时候应该怎么办呢?这种情形就用到了接下来要为大家介绍的“秘密武器”——“亚当”(ADAM)。“亚当”是阿里云提供的独有专业工具,专门为Oracle迁移上云异构化服务。相较于同一类型数据库的迁移,将Oracle迁移到不同类型的数据库上时所需要处理的问题更为复杂。“亚当”系统首先会对Oracle数据库做评估、验证、实施和评测。
adfdc649c27a02300686186d6513f1488f836748

评估阶段的ADAM Agent实际上是一个微型的程序,它能够连接到用户的测试或者生产的Oracle库。这么做的原因是什么呢?用户可以通过该程序抓取到Oracle库上面运行过的所有的存储视图和业务等一系列信息,收集到这些信息之后系统会生成一个存储到用户本地的TXT文件,该TXT文件可以交付给用户公司相应安全审计部门进行审计,审计确认安全后就可以上传到阿里云数据库来生成上述的报告。而此程序自身规模极小,它能够保护源库。一旦发现要采集信息的Oracle数据库性能较慢,该程序会自行挂起来保证源库的性能。
采集完数据之后便是自动化地生成pdf格式的报告,用户通过该报告可以详细地了解迁移时所需要调整的数据库信息,这使得本地数据库迁移上云更加有目标性和便捷性。生成报告之后,虽然scheme procedure package function等本身带有兼容性,但是用户仍需要修改应用程序。阿里云提供的AMSTool工具可以帮助用户直接找到应用程序中不兼容的SQL语句在Java的什么位置,并且给出推荐的修改方案。
e64c7ea66cfc4d83ae504ce55f932355f02269cb

最后一步则是迁移。许多用户在迁移时都会担心一个问题,即从Oracle数据库迁移到新的数据库可能会存在一些不稳定的因素进而导致新的数据库出现问题或者运行能力无法达到用户的要求。针对此问题,阿里云提供了长达30天的数据回流服务,可以让用户在迁移出现问题时能够将增量数据回流到源Oracle数据库中。
78b6af55c6306d8fa330017c18eed8542f7216b7

在数据迁移到云数据库之前,用户一般需要对数据进行压测。传统形式下的压测是通过QA人工运行不同场景下的数据库,通过人为判断速度的快慢给出报告。在现在看来,这种做法是错误的。为此阿里云提供了另一个便捷的工具,该工具会在本地数据库和云数据库分别运行相应的SQL语句,然后给出对比性能效果的报告。同时该报告中也会给出迁移前后数据精度的变化指标,方便用户进行迁移前的准备工作。
18504c4c7b0149344ead78a2486d72364cacc65f


本文由云栖志愿小组李阶平整理

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章