设为首页 收藏本站
查看: 980|回复: 0

[经验分享] Azure SQL Database (21) 将整张表都迁移到Azure Stretch Database里

[复制链接]

尚未签到

发表于 2017-6-30 09:23:35 | 显示全部楼层 |阅读模式
  《Windows Azure Platform 系列文章目录》
  Azure SQL Database (19) Stretch Database 概览
  Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor
  Azure SQL Database (21) 将整张表都迁移到Azure Stretch Database里
  Azure SQL Database (22) 迁移部分数据到Azure Stretch Database
  注意:本节介绍的是,使用国内由世纪互联运维的Azure China Stretch Database,因为国内的Azure和海外的Azure对应的DNS Name略有不同,请读者仔细甄别
  本节使用的T-SQL语句,在这里下载
  在上一节内容中,Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor
  我们发现Sales.OrderTraking这张表,可以迁移到Azure Stretch Database。没有兼容性问题
DSC0000.png

  接下来,本章将介绍如何将这张表的所有内容,都迁移到Azure Stretch Database里。
  准备工作:
  1.首先我们使用Azure China管理平台:https://manage.windowsazure.cn/
  输入Azure China的用户名和密码,然后登陆。
  2.点击SQL是数据库,添加新的SQL Database Server服务器(请注意:是创建Server,不是创建Database,单独创建Server不会产生任何费用)
DSC0001.png

  3.创建的时候,记得选择"启用最新的SQL数据库更新(V12)"
DSC0002.png

  笔者已经预先创建了云上的Server Name: l3cq1dckpd
  用户名:sqladmin,密码:Abc@123456
  注意哦,这些信息下面会使用的。
  4.创建完毕后,记得把本地笔记本的公网IP地址,加入到Azure SQL Database Server的IP白名单里。
DSC0003.png

DSC0004.png

  开始使用:
  1.我们在本地笔记本电脑,打开SQL Server Management Studio (SSMS),运行以下T-SQL语句。  



USE AdventureWorks2016CTP3
GO
SELECT ot.SalesOrderID, ot.CarrierTrackingNumber, ot.OrderTrackingID, ot.TrackingEventID, te.EventName, ot.EventDetails, ot.EventDateTime
FROM Sales.OrderTracking ot JOIN Sales.TrackingEvent te ON ot.TrackingEventID = te.TrackingEventID
ORDER BY ot.SalesOrderID, ot.TrackingEventID;
  可以观察到,因为数据表都保存在本地SQL Server 2016数据库中,所以虽然一共有188790行,但是查询结果不超过2秒
  2.运行以下T-SQL语句,对本地SQL Server 2016,打开归档功能



EXEC sp_configure 'remote data archive' , '1';
RECONFIGURE;
  3.对云端Azure SQL Database的用户名和密码,进行加密,加密的密码同SQL Database的密码:



USE Adventureworks2016CTP3;
CREATE MASTER KEY ENCRYPTION BY PASSWORD='Abc@123456'
CREATE DATABASE SCOPED CREDENTIAL AzureDBCred WITH IDENTITY = 'sqladmin', SECRET = 'Abc@123456';
  4.将本地的SQL Server 2016的归档目标,指向到微软云SQL Database Server(l3cq1dckpd.database.chinacloudapi.cn)
  这个l3cq1dckpd.database.chinacloudapi.cn,是我们在准备工作中,创建的新的服务器



ALTER DATABASE [AdventureWorks2016CTP3] SET REMOTE_DATA_ARCHIVE = ON
(SERVER = 'l3cq1dckpd.database.chinacloudapi.cn', CREDENTIAL = AzureDBCred);
  上面的语句执行时间有点长。请注意:到目前为止,还没有任何的本地SQL Server 2016表数据,迁移到云端Stretch Database里。
  5.运行以下T-SQL,将Sales.OrderTracking表中的所有内容,都迁移到Azure Stretch Database里
  注意:MIGRATION_STATE = OUTBOUND



ALTER TABLE Sales.OrderTracking SET (REMOTE_DATA_ARCHIVE = ON (MIGRATION_STATE = OUTBOUND));
  运行完毕后,本地SQL 2016数据库中的表Sales.OrderTracking的所有数据行,才开始异步迁移
  6.请注意,执行步骤5的语句的时候,其实数据是异步进行迁移的
  我们可以执行以下语句,查看归档数据迁移的进度。



SELECT * from sys.dm_db_rda_migration_status
  注意:如果上面的语句执行没有结果,请稍等片刻后继续执行。会看到以下结果:
DSC0005.png

  请注意:时间为UTC时区,Migrated_Rows表示已经迁移到云端的Stretch Database的数据行,可以看到每次迁移的数据量是9999行
  7.等到步骤6中的T-SQL产生执行结果了,我们分别执行以下语句。



USE AdventureWorks2016CTP3
GO
--显示本地数据行和数据容量
EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'LOCAL_ONLY';
GO
--显示云端Stretch Database的数据行和数据量
EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'REMOTE_ONLY';
GO
  执行结果如下图:
DSC0006.png

  图的上半部分,显示本地SQL Server 2016的表Sales.OrderTracking,一共有数据行188790
  下半部分,显示云端的Stretch Database的表Sales.OrderTracking,一共有0行数据
  8.我们稍等片刻后,继续执行步骤7的语句。结果如下图:
DSC0007.png

  可以看到,本地SQL Server 2016的表Sales.OrderTracking的所有数据,都迁移到了云端Stretch Database。
  本地0行,云端Stretch Database 188790行。
  9.我们登陆Azure China管理平台:https://manage.windowsazure.cn/
  可以看到在云端,已经有新的Stretch Database,版本为 DS100
DSC0008.png

  
  10.然后我们重复执行步骤1中的查询语句,因为Sales.OrderTracking数据从本地迁移到了云端,所以查询时间变长了。
  之前本地执行2秒,现在在云端查询,需要18秒左右。图略。
  11.请记住,可以迁移到云端(但未迁移)的SQL数据(表Table或者试图View),或者已经迁移到Stretch Database云端的SQL数据,无法执行UPDATE和DELETE操作
  插入测试数据到云端Stretch Database的表Sales.OrderTracking,没问题:



---插入测试表
INSERT INTO [Sales].[OrderTracking]
([SalesOrderID],[CarrierTrackingNumber],[TrackingEventID],[EventDetails],[EventDateTime])
VALUES('6666','046DFAA-F901-442A-9D09-67',1,'This Data is generated by Lei Zhang',GetDate())
  但是无法执行UPDATE和DELETE操作



--这句话会报错
UPDATE [Sales].[OrderTracking] SET [CarrierTrackingNumber]='6666' WHERE [EventDetails]='This Data is generated by Lei Zhang'
  12.现在表Sales.OrderTracking数据都保存到云端Stretch Database,如果我们想关闭归档功能,可以执行以下语句。



--Disable Stretch Database and bring back remote data
ALTER TABLE Sales.OrderTracking SET (REMOTE_DATA_ARCHIVE (MIGRATION_STATE = INBOUND));
  13.重复执行步骤7的语句,可以观察到数据异步从云端,迁移到本地SQL 2016。



USE AdventureWorks2016CTP3
GO
--显示本地数据行和数据容量
EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'LOCAL_ONLY';
GO
--显示云端Stretch Database的数据行和数据量
EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'REMOTE_ONLY';
GO
  执行结果略。
  14.最后请大家记住,如果要完全关闭归档功能,除了执行步骤13以外,还需要登陆Azure China管理平台:https://manage.windowsazure.cn/
  删除之前迁移产生的数据库。
DSC0009.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389618-1-1.html 上篇帖子: Azure下安装Redis 下篇帖子: Azure Media Service (1) 使用OBS进行Azure Media Service直播
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表