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 技术文档与示例等等无限量资源。 - 好了,就说这么多,更多的惊喜等你来发现! 

Azure进阶攻略 | 数据库上云:零停机、自动化的更多相关文章
- Azure进阶攻略丨Azure网络通不通,PsPing&PaPing告诉你答案
		很多时候,为了解决一些问题,要查各种文档,很麻烦你造吗!做「伸手党」又容易被鄙视,这时候就需要用到[Azure 进阶攻略]啦!特此,我们推出关于 Azure 常用操作指南的系列文章,每篇涉及一个 Az ... 
- Azure进阶攻略丨共享访问签名是个什么东东?
		Azure 进阶攻略]一经推出便受到了广大粉丝的热情追捧,大家纷纷表示涨了姿势,并希望能了解更多的攻略~根据大家的投票结果,本期,小编将为大家讲解“如何生成 Shared Access Signatu ... 
- Azure 进阶攻略 | 上云后的系统,「门禁」制度又该如何实现?
		各位办公室白领们,不妨回想一下自己每天去公司上班时的一些细节. 为避免「闲杂人等」进入工作场所,我们需要证明自己是这家公司的员工才能进入,对吧!所有员工,无论所属部门或职位,都必须先证明自己身份,例如 ... 
- Azure进阶攻略 | 下载还是在浏览器直接打开,MIME说了算!
		多年来,从一开始的网络菜鸟发展成 Azure 云专家,想必你一定学到了很多知识.不知道在这个过程中你自己是否遇到过,或者被人问到过类似下面这样的问题: 同样是直接点击网页上提供的 .mp4 视频文件链 ... 
- Azure进阶攻略 | 该如何唤醒你?因内核超时而沉睡的Linux虚拟机!
		周五下午,当你收拾好东西准备下班,奔赴 Happy Hour 时,突然接到开发团队的电话: 对方:伙计救命啊,我在搭建开发环境,但 Azure 上的 Linux 虚拟机无法启动! 你(心里想着:你要加 ... 
- Azure进阶攻略 | VS2015和Azure,想要在一起其实很容易
		下雨天,巧克力和音乐很配…… 大冬天,男神和捧在手里的奶茶很配…… 「驴牌」的包包,和女神的全部衣服都配…… 对于「王首富」,容易实现的小目标和一个亿是绝配…… …… 醒醒吧!!这些事情和每天只会写代 ... 
- Azure进阶攻略丨如何驾驭罢工的Linux虚机网卡?
		很多人的生活中,流传着一个屡试不爽,据说可以解决任何问题的百宝锦囊: 所以经常可以听到类似这样的对话: -我的电脑咋上不去网了? -重启一下电脑. -还是不行呢! -重启一下路由器. -怎么还不行-_ ... 
- Azure进阶攻略 | 应用流畅运行杜绝超载,自有一套好方法
		世界上很多东西,无论交通工具.房屋建筑,甚至计算机程序,在容量方面都存在设计上的理论最大值. 比如火车,正常情况下是这样的.舒适地坐着,安静地读一本书,时不时抬头若有所思地远眺车窗外风景,满满的文艺范 ... 
- Azure进阶攻略 | 你的程序也能察言观色?这个真的可以有!
		前段时间有个网站曾经火爆微博和朋友圈:颜龄机器人.只要随便上传一张包含人面孔的照片,这个网站就可以分析图片,并判断照片中人物的年龄.化妆.美颜 P 图.帽子墨镜之类的配饰,几乎都没法影响这个网站的检测 ... 
随机推荐
- 在docker容器中安装vim命令进行编辑文件
			首先执行: 执行apt-get update, 然后再次执行apt-get install vim即可成功安装vim. 然后我们就可以使用vim编辑 如果不进行更新就会报错: 此时会报出bash: v ... 
- org.json里实现XML和JSON之间对象互转
			org.json包里有一个类org.json.XML可以实现XML和JSON之间的转换.http://www.json.org/javadoc/org/json/XML.html JSONObject ... 
- java  在web应用中获取本地目录和服务器上的目录不一致的问题
			先来讲讲我所遇到的问题.最近有个新的项目添加新的功能. 修改之后部署到服务器上面发现取到classpath目录跑到别的地方去了.在本地测试却正常. 当时毛的着火了.硬是想不懂什么问题. 终于发现了这个 ... 
- Go语言基础之2--字符串详解
			一.字符串原理解析 1. 字符串底层就是一个byte数组,所以可以和[]byte类型互相转换:(字符串可以存文本,也可以存二进制,因为其本来就是一个字节流) 2. 字符串之中的字符是不能修改的,那怎 ... 
- Clover笔记
			1. Clover传参 a. jobflow传到子graph(GraphParameters): 设值: 用全局GraphParameters传递,在ExecuteGraph中的output mapp ... 
- js 数字处理Number()
			//js将数字转换保留2位小数 function toDecimal(x) { var val = Number(x) if (!isNaN(parseFloat(val))) { //toFixed ... 
- 异地clone RAC数据库 +ASM USE RMAN
			###sample 如何在本地生成数据库的备份,并复制到DG库新环境(高级) 1. 首先确定本地文件系统(存放备份集)足够大,可以使用如下语句查询当前数据库实际的使用总大小 Rman 备份进度: se ... 
- 2019.03.21 读书笔记 枚举ENUM
			其实没必要为枚举显式赋值,如果赋值了,就一定要全部赋值,否则默认在上一个元素的基础上+1,如果不给枚举变量赋值,就算枚举中没有0元素,也会显示为0,而超出枚举范围的整型数据,也会显示值本身,而不是异常 ... 
- 本地git的使用
			git和svn的解析 git 教程 git rebase的用法 attion: one: git中是严格区分大小写的,文件名字大小写敏感 two: git中分为:工作区,暂存区,分支 three: ... 
- C# 进一取整
			C#: // "/"号现在整形运算是取整,浮点运算时为除法运算 Console.WriteLine("(56/10):{0}", 56 / 10);//5 Co ... 
