Azure进阶攻略 | 数据库上云:零停机、自动化

小明最近挺忙,刚刚在外地找了个新工作,正在忙着搬家。多年积攒的家当很多,根本不能潇洒地「说走就走」,于是他联系了搬家公司。专业的就是不一样,不费什么事,就把所有东西打包、运输、拆包到位了。抵达新城市的小明很快投入了新工作中。

上班第二天,上司就交代了一项任务:公司打算将本地部署的 SQL Server 数据库迁移到 Azure,并让小明出一份方案,必须将本地数据库内的数据尽快迁移上云,同时这一过程不能影响数据库的运作,更不能造成业务中断。

目前的具体情况是这样的:

  • 公司本地运行着 SQL Server 2014,并已安装所有更新;

  • 公司已经在 Azure 中开通了所需配置的 Azure SQL 数据库;

  • 小明手头已经有两个数据库的访问凭据之类的东西。

那么,小明需要制定什么样的方案,执行什么样操作才能完成任务呢?不用麻烦,只要找对「搬家公司」,一样可以快速简单地把本地数据搬上云端

事务复制(TransactionalReplication)是由 SQL Server 快照代理、日志读取器代理和分发代理共同实现的一种复制操作,可在服务器和服务器之间实现下列任务:

  • 发生增量更改时将其传播到订阅服务器;

  • 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短;

  • 应用程序需要访问中间数据状态。例如,如果某一行更改了五次,事务复制将允许应用程序响应每次更改(例如,激发触发器),而不只是响应该行最终的数据更改;

  • 发布服务器有大量的插入、更新和删除活动;

  • 发布服务器或订阅服务器非 SQLServer 数据库的情况。

因此只需将 Azure SQL 数据库作为事务复制的订阅服务器,将本地 SQL Server 作为发布服务器,即可通过事务复制功能,直接将本地数据以「事务」的方式复制到 Azure,并确保不停机不中断,获得无缝的迁移体验。

事务复制功能的详细介绍可参阅这里

使用SQL Server Management Studio

迁移实战

「搬家公司」已经有了,小明很快开始在 SQL Server Management Studio 中执行数据迁移操作:

1、创建一个新的事务复制。右键点击 Replication 下的 Local Publication,并选择 New Publication Wizard,会调出新建复制向导。

2、选择 Snapshot publication 或 Transactional publication,本文以 Transactional publication 为例。                                                                                                                          

3、完成向导中的后续步骤,创建一个复制。                                                                                                                                                                                                                  

4、创建一个新的订阅。右键点击刚创建的发布,选择 New Subscriptions,调出新建订阅向导。                                                                                                                                          

5、完成向导中所需步骤,在下图 Subscribers 页面,点击 Add Subscriber -> Add SQL Server Subscriber。                                                                                                                         

6、输入所需的信息,连接到 Azure SQL DB。                                                                                                                                                                                                                   

7、选择一个 Subscription Database 来接受复制内容。                                                                                                                                                                                                         

8、完成向导的余下部分,创建订阅。                                                                                                                                                                                                                                     

9、创建订阅后,可以看到改订阅出现在之前创建的发布下。                                                                                                                                                                                         

接着只要等待就行了。取决于数据量等因素,整个过程可能会需要一段时间。在复制进行的过程中,本地数据库依然在正常运行,不会受到任何影响,同时本地进行的数据更新增减等操作,也会自动复制到 Azure。

为了验证复制是否已经生效,可以尝试在本地 SQL Server 发布的表中插入数据,并继续等待复制,如果插入的数据也出现在 Azure SQL 数据库对应的表中,即意味着复制已经顺利生效了。 

你一定得知道的注意事项

事务复制是一种很强大的功能,但在使用时依然有些问题需要注意:

  • 只支持 Snapshot 及单向事务(本地 SQL 到 Azure SQL)复制,不支持 Peer-to-peer 事务复制及MergeReplication。

  • 目前仅支持 SQL Azure V12。

  • 无法通过 SQL Database 门户来配置事务复制。

  • 复制只能使用 SQL Server 身份验证方式登录连接到 SQL DB。

  • 只支持 Push Subscription。

  • 被复制的表必须要有主键。

此外,目前该功能要求发布服务器和订阅服务器至少是以下 SQL Server 版本之一:

  • SQL Server 2016 CTP3(预览版)和更高版本

  • SQL Server 2014 SP1 CU3 和更高版本

  • SQL Server 2014 RTM CU10 和更高版本

  • SQL Server 2012 SP2 CU8 和更高版本

  • SQL Server 2012 SP3(发行时)                                                                                                                                                                                                                        推荐阅读

    事务复制这个搬家公司怎么样?是不是让你的工作更加的高效便捷了,小编这里还有更多可以在你的操作中最常遇到的问题的解决办法,赶紧拿走吧:

    《使用 Azure 虚拟机快速搭建安全的 FTPS 服务器》

    《使用共享访问签名对存储资源的访问进行身份验证》

     

    对了,瞧小编这记性,差点就忘了一件大事被老板扣工资了,下面是大事。

    大事:【Azure文档】菜单上线咯!

    小伙伴们可以通过云科技公众号主页底部菜单【了解云】中的【Azure文档】菜单,一键获取你想得到想不到的 Azure 技术文档与示例等等无限量资源

    好了,就说这么多,更多的惊喜等你来发现!

立即访问http://market.azure.cn

posted on 2017-08-14 17:25  DavidZang  阅读(368)  评论(0编辑  收藏  举报