zoukankan      html  css  js  c++  java
  • Azure Backup (1) 将SQL Server 2012虚拟机中数据库备份到Azure Storage

      《Windows Azure Platform 系列文章目录

      本文介绍的是由国内世纪互联运维的China Azure,相比国外的Global Azure。主要区别是存储账号的DNS地址不同,请读者注意区别。

      最近有一个客户想了解,如何将SQL Server 2012虚拟机中的数据库备份到Azure Storage存储账号中,笔者研究了一下,分享给大家。

      前提要求:

      1.需要1台安装了SQL Server 2012 SP1 CU4以上的Windows Server虚拟机

      2.需要有Azure China的账户和订阅

      注意事项:

      1.保存到Azure Storage的数据库备份BAK文件,最大不能超过200GB,是单个Block Blob的最大容量限制

      2.如果数据库备份BAK文件超过了200GB,可以考虑后续做差异备份

      3.在同一个存储账号下的所有BAK文件,数量是没有上限的,但是所有的BAK总容量不能超过500TB,这是Azure Storage Account存储账号的容量限制

      

      实现方式:

      1.创建Azure Storage Account存储账号和Container

      2.执行相应的T-SQL语句,进行数据库的全备份

      3.设置SQL Server Job

      接下来我们详细介绍一下:

      1.首先我们登陆Azure China管理界面 https://manage.windowsazure.cn

      2.创建新的存储账号,命名为leidbbak,如下图:

      

      注意上面的存储账号所在的位置,最好和SQL Server虚拟机所在的数据中心位置保持一致,加快数据库文件备份速度。

      3.在该存储账号下,创建Container,命名为dbcontainer。注意设置Access为Private,不允许匿名访问

      

      4.然后我们通过远程桌面连接,连接到安装了SQL Server 2012 SP1 CU4以上的Windows Server虚拟机

      打开本地的SQL Server Management  Studio。首先创建credentials。命令如下:

    IF NOT EXISTS
    (SELECT * FROM sys.credentials 
    WHERE credential_identity = 'BackupDBtoAzureStorageCredential')
    CREATE CREDENTIAL BackupDBtoAzureStorageCredential WITH IDENTITY = '[存储账号名称]'
    ,SECRET = '[存储账号密钥]' ;

      执行完毕后,我们可以通过命令:

    SELECT * FROM sys.credentials 

      查看在sys.credentials表中,创建的Credential。

      如果需要删除Credential,我们可以通过命令:

    DROP CREDENTIAL [CredentialName]

      删除不需要的Credential

      5.然后我们执行以下T-SQL语句,如下:

    declare @url varchar(256) 
    set @url= 'https://leidbbak.blob.core.chinacloudapi.cn/dbcontainer/'+ CONVERT(nvarchar(8), GETDATE(), 112)+ '-AdventureWorks2008.bak'
    
    BACKUP DATABASE AdventureWorks2008
    TO URL = @url
          WITH CREDENTIAL = 'BackupDBtoAzureStorageCredential' 
         ,COMPRESSION
         ,STATS = 5;
    GO 

      我们备份本地数据库名字为AdventureWorks2008

      注意上面的@url这个参数,我们保存到之前步骤3中创建的Container。

      并且通过CONVERT(nvarchar(8), GETDATE(), 112),将bak文件名,按照YYYYMMDD的格式进行重命名

      6.执行上面的T-SQL语句后,可以查看到T-SQL执行成功。

      我们回到Azure管理界面,查看存储账号,可以看到数据库备份成功。

      

      

      7.最后我们将步骤5中的T-SQL语句,通过SQL Server Job,每天执行一次。这样每天就可以自动把数据库备份到Azure Storage Account,并且重命名。

      8.读者可以根据需要,修改步骤5中的T-SQL语句,可以按照一定规律,将差异备份、或者是日志备份,保存到Azure Storage中。

      9.最后一步,如果我们定期备份数据以后,希望把老旧的数据删除的话,可以用Azure Automation实现,具体参考这篇blog:

          Azure Automation (2) 定期删除存储账号中的文件

      参考资料:https://msdn.microsoft.com/en-us/library/jj919148(v=sql.110).aspx 

  • 相关阅读:
    (三)通用定时器的定时功能(不使用中断)
    (二)STM32中中断优先级理解
    (一)通用定时器的相关介绍
    Ambari client
    Ambari的资源池管理
    Sentry的授权模型
    关于yum
    Ambari-HDP
    Ambari的API调用
    CentOS上面搭建SVN服务器
  • 原文地址:https://www.cnblogs.com/threestone/p/4668608.html
Copyright © 2011-2022 走看看