在探讨基于Windows Azure虚拟机的SQL Server的容灾设计的时候,可以考虑将SQL Server数据库在本地(On-promise)和Windows Azure虚拟机之间通过AlwaysOn、Database Mirroring、Log Shipping等方式进行备份。
但这种方式都要受限于Windows Azure虚拟机的限制,例如,目前最大尺寸的Windows Azure虚拟机的限制可附加的最多的数据盘(Data Disk)是16个,每个数据盘最大容量为1TB,即总共为16TB。
对于一些本地数据库比较大,或者历史数据不断膨胀超规模等场景,如何更好地支持容灾备份,需要做进一步的考虑。
另一方面,Windows Azure Blob Storage有更大的存储容量;同时,可以充分利用Windows Azure数据中心的地理分布,实现跨地域的容灾备份。此外,不必考虑容灾备份所需要的额外的房屋/数据中心租赁费、硬件、网络、人工等成本,而是用更为灵活、便宜的Windows Azure存储,是一个非常值得考虑的解决方案。
好消息是在SQL Server 2012 Service Pack 1的CU2补丁包(Cumulative update package 2)中,提供了将SQL Server数据库备份到Windows Azure存储(Blob Storage)中,及从存储中恢复。
具体备份命令也是非常简单,可以使用TSQL、C#、PowerShell等命令,提供Blob Storage的Url、证书(Credential)等即可。此外,建议使用压缩(WITH COMPRESSION)选项,来降低备份空间及时间。
Cumulative update package 2 for SQL Server 2012 Service Pack 1的下载地址:
http://support.microsoft.com/kb/2790947
此外,还可以参考CodePlex上的一个项目:Microsoft SQL Server To Windows Azure helper library,这个项目探讨如何跨接SQL Server Transact-SQL和Windows Azure平台。
https://sqlservertoazure.codeplex.com/
当然,还有就是更加期待SQL Server 2014,将提供的相关工具。可参考:
http://blogs.msdn.com/b/igorpag/archive/2013/10/23/create-a-sql-server-2014-database-directly-on-azure-blob-storage-with-sqlxi.aspx