听说你有数据库想要上云?微软专家给你支招了!

百家 作者:微软科技 2020-03-30 15:52:56

(本文阅读时间:5 分钟)

各位IT小能手们,恐怕一直以来没少参与过规模各异结果迥然的“数据迁移”项目吧:

  • 小时候,用3.5寸软盘从同学家拷贝好几十个游戏的快捷方式,然后喜滋滋准备在自己家玩……

  • 长大了,亲戚朋友新组装电脑,总会慕名找你把各种软件数据搬迁到新电脑,然后收获一片赞。

  • 工作了,给爸妈买新手机后,第一件事就是把所有应用,包括微信聊天记录啥都迁到新手机里。

对熟练的你来说,数据迁移有啥难的?只要懂原理,有适合的工具,那不都是小菜一碟。直到你工作中遇到了数据库迁移的项目……

01

数据库迁移,到底难在哪?

首先,你需要迁移的数据库可能使用了不同技术:SQL Server、RDS SQL、MySQL、Oracle、MongoDB……

其次,这些源数据库可能运行在不同地方:本地数据中心、本地私有云、公有云,或者其他什么地方……

而你可能得把这些数据库迁移到各种地方:本地、云端、公有云、私有云、混合云……

并且可能还需要满足一些要求:不停机(或者最小化停机)、不对业务运转产生任何影响、迁移后可以立即上线使用……

各种复杂因素结合在一起,那么你的数据库迁移项目,到底该如何着手进行才能符合最佳实践,不仅可以保证快速完成,还能获得最理想的效果?

02

迁移问题,交给

Azure Database Migration Service 最省事

针对这些问题,微软围绕Azure平台提供的各类数据库产品发布了自己的数据迁移服务:Azure Database Migration Service(Azure DMS),借此帮助想把各类数据库迁移到Azure的客户解决数据库迁移的后顾之忧。

Azure DMS是一种完全托管的服务,旨在确保最小化停机时间的前提下,帮助用户从多个数据库源无缝迁移到Azure。该服务集成了一系列工具和服务,能为客户提供高度可用的综合解决方案,例如使用数据迁移助手生成评估报告,这些报告可提供建议,并能指导执行迁移之前完成所需的更改。所有操作和流程均遵循微软的最佳实践,因此客户启动迁移项目后便可高枕无忧。

该服务目前可支持的源数据库

对于迁移的数据源,Azure DMS支持从IaaS及各云平台的PaaS服务迁移到Azure PaaS服务上。完整迁移过程的原理如下图所示:

从上至下来看,在Pre-migration阶段评估工作量并做Schema映射,继而开始做接近同步的异步Migration,最后可以通过Cutover来做应用程序的迁移。对于该服务,微软提供了丰富的学习资料,包括详细的官方文档(文末附录1)以及视频材料(文末附录2)等,有兴趣的童鞋可以自行查阅。

下文,我们将通过一个模拟示例展示从其他云平台的RDS MySQL (后文简称RDS MySQL)到Azure MySQL PaaS的迁移过程,希望能够对大家有所帮助。

03

将RDS MySQL迁移至Azure

为了尽可能模拟真实生产环境,下文将模拟从其他云平台的中国区RDS MySQL到中国区Azure MySQL PaaS的迁移,所涉及到的MySQL版本为5.7。具体信息如下:

在进行实验前,需要正确安装Terraform、MySQL Client等软件包,详细步骤请参考相应文档,本文不进行赘述。具体的客户端连接MySQL Server的操作过程在WSL2-Ubuntu-18.04以及Windows 10的Navicat 12客户端上进行。

1

Azure 资源创建初始化

首先通过Terraform自动化部署MySQL Generel Purpose 2core实例。需要注意:在中国区Azure创建资源的时候需要指定Environment为China,具体的.tf文件内容如下:

部署过程大概需要10分钟左右,整个初始化过程会创建资源组、Vnet、NSG、Azure MySQL PaaS实例等。相关信息如下:

需要注意:Azure MySQL PaaS没有启用SSL。

2

创建RDS MySQL实例

创建实例的过程不予赘述,通过门户一步一步点击即可。本文主要阐述功能性验证,所以部署的实例类型为MySQL 5.7基础版1Core2G的mysql.n2.small.1实例,并启用公网地址。

创建完毕后,需要设置白名单,以便让Azure DMS和其他云平台中运行的RDS MySQL通过公网调用。Azure China Service IP Range可以在文末附录2地址下载,随后把这些网段加到白名单中即可,以避免直接设置为0.0.0.0/0。

3

将示例数据导入RDS MySQL实例

本文采用MySQL官方提供的employees数据库,详情可参考官网地址(文末附录3)GitHub地址(文末附录4)。该实例数据库包含了300,000名员工及收入信息,数据量大概100MB+,这已经足够进行测试。employees库中,表之间的调用关系如下图所示:

下面开始进行实验,首先通过Linux MySQL Client连接至RDS MySQL实例安装并导入数据库:

通过SQL查看具体的表容量:

安装完可进行验证:

4

创建Azure DMS实例

登录到中国区Azure门户(https://portal.azure.cn/),选择All services -> Azure Database Migration Services -> 点击 Add:

注意:Azure DMS有Standard和Premium两个SKU可选择,具体性能指标和价格可以参阅文末附录5 。本实验选择Premium的主要原因是Premium SKU支持数据库的联机迁移。

5

在目标Azure MySQL PaaS上创建Schema

通过mysqldump配合–no-data从阿里云RDS MySQL导出Schema SQL并导入到Azure MySQL PaaS中:

导入后需要删除Azure MySQL PaaS employees库里的Foreign Key,查询外键的SQL语句如下:

选择出结果中关于Drop的语句并执行:

至此,Schema已成功迁移至Azure MySQL PaaS。

6
创建迁移项目并进行联机迁移

创建过程按照迁移向导一步一步操作即可,注意需要在Azure MySQL PaaS上配置允许Azure DMS的访问,Source Database类型选择MySQL或Amazon RDS MySQL都可以。

配置完毕后,直接Run Migration即可开始迁移,迁移结束后的状态如下图所示。需要注意:由于进行的是联机迁移,因此迁移结束后DMS还处于Running状态。如果此时需要停止,可以进行Cutover。

离线迁移完成后,接下来我们将模拟在阿里云RDS MySQL的实时写入,并在Azure MySQL PaaS上查看异步同步的数据来模拟Online迁移。具体写入employees库的employees表,插入主键emp_no范围在10 ~ 153这144条记录。为避免冲突,可以考虑先在插入之前用SQL Query确认一下是否有插入的字段。插入脚本如下:

为了方便更直观的查看结果,该结果使用Navicat 12连接数据库,具体插入同步结果如下:

其他云平台RDS MySQL:

Azure MySQL PaaS:

114条记录同步确认:

通过Azure DMS可以看出来异步同步的记录数量,同时查询数据库也可以做双重验证:

除此之外,Azure DMS也能够根据写入速度、频率及数据量大小来评估出来应用程序在做Cutover时的停机时间,这也是个非常人性化的功能。

04

 总结

至此,跨云平台的MySQL PaaS迁移已经完成了。通过Azure DMS可以通过联机方式将数据库迁移至Azure,并且能够给出校验结果。但本文还有一些可进一步优化的场景,例如Azure DMS的迁移可以通过VPN链路,VPN通过两朵云的VPN Gateway打通即可,亲测可行。篇幅有限就不累述了,感兴趣的小伙伴可以自行尝试。

最后,对Azure DMS感兴趣的童鞋,可以通过下列资源进一步学习和了解,或留言与我们交流探讨。


文末附录

1、Azure DMS 官方文档

https://aka.ms/dms

2、 Azure DMS 视频文档

https://www.microsoft.com/en-us/download/details.aspx?id=57062

3、MySQL 官方地址

https://dev.mysql.com/doc/employee/en/

4、 MySQL GitHub 地址

https://github.com/datacharmer/test_db

5、Azure DMS 性能指标:

https://www.azure.cn/zh-cn/pricing/details/database-migration



4月17-18日,首届 Microsoft Online Tech Forum 微软在线技术峰会将在线上正式拉开帷幕!微软将会围绕“数字化转型加速度”为主题,以自身技术产品和行业实践为引,希望能够加速行业内的数字化进程,引领业界未来数字生态的趋势走向,扫描下方海报二维码即可查看更多精彩。


1
推荐阅读
《微软给企业的7个锦囊》—No.3
“快、准、稳”三管齐下 | “运营高效”助力企业无忧出海
新基建时代下,开发者的自我修养
2
最新活动
赛道风起,谁与你一起弯道超车?


关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接