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

上班第二天,上司就交代了一项任务:公司打算将本地部署的 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

Azure进阶攻略 | 数据库上云:零停机、自动化的更多相关文章

  1. Azure进阶攻略丨Azure网络通不通,PsPing&PaPing告诉你答案

    很多时候,为了解决一些问题,要查各种文档,很麻烦你造吗!做「伸手党」又容易被鄙视,这时候就需要用到[Azure 进阶攻略]啦!特此,我们推出关于 Azure 常用操作指南的系列文章,每篇涉及一个 Az ...

  2. Azure进阶攻略丨共享访问签名是个什么东东?

    Azure 进阶攻略]一经推出便受到了广大粉丝的热情追捧,大家纷纷表示涨了姿势,并希望能了解更多的攻略~根据大家的投票结果,本期,小编将为大家讲解“如何生成 Shared Access Signatu ...

  3. Azure 进阶攻略 | 上云后的系统,「门禁」制度又该如何实现?

    各位办公室白领们,不妨回想一下自己每天去公司上班时的一些细节. 为避免「闲杂人等」进入工作场所,我们需要证明自己是这家公司的员工才能进入,对吧!所有员工,无论所属部门或职位,都必须先证明自己身份,例如 ...

  4. Azure进阶攻略 | 下载还是在浏览器直接打开,MIME说了算!

    多年来,从一开始的网络菜鸟发展成 Azure 云专家,想必你一定学到了很多知识.不知道在这个过程中你自己是否遇到过,或者被人问到过类似下面这样的问题: 同样是直接点击网页上提供的 .mp4 视频文件链 ...

  5. Azure进阶攻略 | 该如何唤醒你?因内核超时而沉睡的Linux虚拟机!

    周五下午,当你收拾好东西准备下班,奔赴 Happy Hour 时,突然接到开发团队的电话: 对方:伙计救命啊,我在搭建开发环境,但 Azure 上的 Linux 虚拟机无法启动! 你(心里想着:你要加 ...

  6. Azure进阶攻略 | VS2015和Azure,想要在一起其实很容易

    下雨天,巧克力和音乐很配…… 大冬天,男神和捧在手里的奶茶很配…… 「驴牌」的包包,和女神的全部衣服都配…… 对于「王首富」,容易实现的小目标和一个亿是绝配…… …… 醒醒吧!!这些事情和每天只会写代 ...

  7. Azure进阶攻略丨如何驾驭罢工的Linux虚机网卡?

    很多人的生活中,流传着一个屡试不爽,据说可以解决任何问题的百宝锦囊: 所以经常可以听到类似这样的对话: -我的电脑咋上不去网了? -重启一下电脑. -还是不行呢! -重启一下路由器. -怎么还不行-_ ...

  8. Azure进阶攻略 | 应用流畅运行杜绝超载,自有一套好方法

    世界上很多东西,无论交通工具.房屋建筑,甚至计算机程序,在容量方面都存在设计上的理论最大值. 比如火车,正常情况下是这样的.舒适地坐着,安静地读一本书,时不时抬头若有所思地远眺车窗外风景,满满的文艺范 ...

  9. Azure进阶攻略 | 你的程序也能察言观色?这个真的可以有!

    前段时间有个网站曾经火爆微博和朋友圈:颜龄机器人.只要随便上传一张包含人面孔的照片,这个网站就可以分析图片,并判断照片中人物的年龄.化妆.美颜 P 图.帽子墨镜之类的配饰,几乎都没法影响这个网站的检测 ...

随机推荐

  1. vue.js组件之j间的通讯四,通过单一事件来管理组件通讯

    总结; 首先需要创建是一个空实例: var vm = new Vue(); vm.$emit(事件,数据); vm.$on(事件,function(data){ }bind(this))

  2. 第一册:lesson 125.

    原文: Tea for two. question:Does Susan have tea by herself? Can't you come in and have tea now Piter? ...

  3. css3文本域焦点烟花效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 查看php 相关信息

    PHP系统常量 __FILE__ 当前PHP程序脚本的绝对路径及文件名称 __LINE__ 存储该常量所在的行号 __FUNCTION__ 存储该常量所在的函数名称 __CLASS__ 存储该常量所在 ...

  5. 321B

    MCMF必须是满足流量最大为前提下的最小费用流(这里是最大费用流) 因此还必须不断地枚举m的流量才行 #include<iostream> #include<algorithm> ...

  6. Html背景图

    <table style="height: 210px;" ><tbody><tr><td style="background- ...

  7. python练习六十三:文件处理,读取文件内容,按内容生成文件

    python练习六十三:文件处理 假设要读取code.txt文件中内容,code.txt文件内容如下 01 CN Chinese 02 US United States of America 03 J ...

  8. gitlab 邮件配置

    vim /etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "sm ...

  9. math.random()方法的使用

    一:导言 以前总是被数字的范围正则搞的头大,在此总结了一下 二:用法 Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1) 生成n-m,包含n但不包含m的整数: ...

  10. Nuxt 2.3.X 配置sass

    1.需要安装node-sass和sass-loader就行了 npm i -S node-sass sass-loader