本篇是我在IT168的約稿,原文地址:http://tech.it168.com/a2014/0620/1637/000001637358_all.shtml
IT行業已經進入了云時代,未來越來越多的企業IT基礎架構將會部署在公有云、私有云或者混合云上,而數據庫作為IT基礎架構中最重要的部分與云的結合將變得非常重要。SQL Server 2014打通了公有云與組織內部的關系,無論是運行在企業內部還是運行在Microsoft Azure虛擬機上,SQL Server 2014直接支持將數據文件和日志部署到Microsoft Azure公有云存儲,從而可以無縫打通公有云和私有云的邊界,架構如圖1所示。
圖1.SQL Server 2014直接支持將數據庫文件部署在Azure Blob
為什么需要將SQL Server數據文件部署在Microsoft Azure
將數據直接部署在Azure Blob存儲中可以直接帶來諸如性能、數據遷移、數據虛擬化、高可用和災備方面的好處。但最主要適用場景和優勢如下:
- 可移植性:在Azure虛擬機環境下,將數據部署在Azure Blob中會更加容易移植,只需要簡單將數據庫分離,并附加到另一臺Azure虛擬機中即可,無需移動數據庫文件本身。
- 數據庫虛擬化:在為租戶提供服務的云環境中,可以結合SQL Server 2012之后的包含數據庫特性,將負載較高的虛擬機上的數據庫平滑移動到其他虛擬機上,從而不會影響該虛擬機環境的正常運行。
- 高可用和災備:由于現在數據庫文件位于Microsoft Azure的Blob存儲上,因此即使虛擬機本身崩潰,只需要將數據庫文件附加到另一臺備機上即可。數據庫可以在很短的時間內恢復并且數據本身不受虛擬機損壞的影響,從而保證了高RTO和RPO。
- 可擴展性:無論在Azure虛擬機上還是在企業內部,存儲的IOPS都收到具體環境的限制,而在Azure Blob存儲上,IOPS可以非常高。
SQL Server 2014與Azure Blob存儲的全新交互模塊并不僅僅是在現有軟件環境中的一個適配機制,而是直接集成于SQL Server存儲引擎。數據訪問機制如圖2所示。
圖2.數據庫文件在Azure Blob上的數據訪問機制
由圖2可以看出,該數據交互機制不再需要虛擬機通過宿主機和IO通道進行交互,此時虛擬機可以直接通過REST API調用存儲。從而比在虛擬機上直接訪問本地存儲有更好的性能。
將SQL Server數據文件部署在Microsoft Azure
下面通過一個例子展示如何將SQL Server數據庫文件部署在Azure Blob存儲上。首先,需要在Azure存儲中建立存儲SQL Server數據庫文件的容器,如圖3所示。
圖3.建立存儲數據庫文件的容器
將容器起名為testsqlfile,訪問類型為私有,容器名稱標識了數據庫文件的訪問地址,如圖4所示。
圖4.新建容器
接下來,創建訪問容器的策略以及共享訪問簽名(shared access signature)。SQL Server需要這個策略和簽名才能夠與Azure存儲上的數據文件進行交互,創建策略和簽名的方式可以使用編程的方式,也可以使用REST APIs,在本例中,使用CodePlex現有的一個工具進行創建(可在http://azurestorageexplorer.codeplex.com 下載)。
首先在Microsoft門戶中找到訪問存儲的賬戶名稱和訪問密鑰,如圖5所示。
圖5.找到賬戶名稱和訪問密鑰
圖6.創建策略
圖7.生成簽名
簽名生成成功后,可以通過下述代碼在SQL Server中建立訪問Azure存儲容器的憑據:
CREATE CREDENTIAL [https://portalvhdss6xh8nlhcph8b.blob.core.windows.net/sqldata]
WITH IDENTITY='SHARED ACCESS SIGNATURE',
SECRET = 'sr=c&si=NewPolicy&sig=%2FhFH82XmxmYSPgvc404WqbK6gIUFfrXmEkKxcmIogWA%3D'
憑據建立完成后,在SQL Server 2014中就可以利用該憑據在Blob存儲上創建數據庫,在本示例中創建了3個數據文件和1個日志文件,總計31GB,創建用時36秒,,如圖8所示。
圖8.在Azure存儲上創建數據庫文件
現在通過SQL Server Management Studio連接到Azure的存儲環境,就能夠看到剛剛創建的數據庫文件,如圖9所示。
圖9.在Azure Blob上創建的數據庫文件
總結
SQL Server 2014與Microsoft Azure有了更深度的集成,并通過存儲引擎引隱藏了不必要細節,用戶可以用創建一個普通數據庫方式創建一個將數據庫文件存儲在Azure存儲上的數據庫,從而帶來性能、可用性、擴展性、災備甚至數據虛擬化方面的好處。
文章列表