前段时间有个客户有如下需求,将Azure SQL Database数据库容灾到本地(备份频率1小时/次)。

那么对于这样的需求,我们可以使用Azure Automation来实现自动化备份到本地。

大致备份流程如下:

1、先决条件:

l  Azure 账号

l  Automation 账号

l  Storage 账号

l  最新版Azure Powershell Module

2、创建Azrue Automation

依次选择App Services——>Automation——>Runbook——>Quick Create

3、使用 Azure 服务管理和 Resource Manager 对 Runbook 进行身份验证

2.1 选择“Automation”。

2.2 在“自动化仪表板”页上,选择“ASSETS”。

2.3 在“ASSETS”页上,选择位于页面底部的“ADD SETTING”。

2.4 在“ADD SETTING”页上,选择“ADD CREDENTIAL”。

2.5在“Define Credential”页的“CREDENTIAL TYPE”下拉列表中选择“Windows PowerShell Credential”,并提供凭据名称。

2.6在随后出现的“Define Credential”页上,在“USER NAME”字段中键入前面创建的 AD 用户帐户的用户名,并在“PASSWORD”和“CONFIRM PASSWORD”字段中键入密码。单击“确定”保存更改。

4、替换Azure Powershell Module

在这里有一点非常重要,我们可以看到Azure Powershell Module是2016/12/12这个版本,

而遗憾的是这个版本的Azure Powershell Module没有提供导出SQL Database的命令,所以我们需要手动更新Azure Powershell Module

更新后Azure Powershell Module

5、备份SQL Database脚本

workflow BackUpSQLDB
{
$Credential = Get-AutomationPSCredential -Name 'BackupDB'
Add-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $Credential
$ResourceGroupName='RESOURCE-GROUP-NAME'
$ServerName='SERVER-NAME'
$DatabaseName='DATABASE-NAME'
$StorageName='STORAGE-NAME'
$StorageKeytype='StorageAccessKey'
$StorageKey='base-64 String'
$BlobName=$DatabaseName+(Get-Date).Tostring('yyyy-MM-dd-HH-mm-ss') + '.bacpac'
$BacpacUri='https://STORAGE-NAME.blob.core.chinacloudapi.cn/dbbackup/'+$BlobName
$SqlUserName='SQL LOGIN USER NAME'
$SqlPassword = ConvertTo-SecureString -String 'SQL LOGIN PASSWORD' -AsPlainText -Force
#Get-AzureRmSubscription
Set-AzureRmContext -SubscriptionId 'SUBSCRIPT ID'
$exportRequest = New-AzureRmSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -StorageKeytype StorageAccessKey -StorageKey $StorageKey -StorageUri $BacpacUri -AdministratorLogin $SqlUserName -AdministratorLoginPassword $SqlPassword
Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
}

6、将备份到Azure Storage下载到本地

workflow DownloadToLocal
{
$Credential = Get-AutomationPSCredential -Name 'BackupDB'
Add-AzureAccount -Environment AzureChinaCloud -Credential $Credential
Select-AzureSubscription -SubscriptionId '{Subscription ID}'
$StorageName='STORAGE-NAME'
$StorageKeytype='StorageAccessKey'
$StorageKey='base-64 String'
$StorageContext = New-AzureStorageContext -StorageAccountName $StorageName -StorageAccountKey $StorageKey -Environment AzureChinaCloud
Get-AzureStorageBlobContent -Context $StorageContext -Container "dbbackup" -Blob $BlobName -Destination "C:\test\"
}

备份到Storage

备份到本地

使用Automation将Azure SQL DB容灾到本地的更多相关文章

  1. 将 Azure SQL 内数据下载到本地,满足企业的「数据收集」

    嫌长不看版 本文介绍了通过复制和导出两个操作,将 Azure SQL 数据库中的内容转移至其他位置(例如本地环境)的具体做法.借此可以帮助用户在 Azure 中运行数据库的同时,在本地或指定的其他位置 ...

  2. Azure SQL作業

    由於要定期去刪除比較久的資料,礙於Azure SQL DB目前無法直接創建作業,目前找到一種方式就是通過local的SQL SERVER來執行AZURE SQL指令. 步驟如下: SQL Server ...

  3. 【数据库-Azure SQL Database】如何创建事务复制将本地数据同步到 SQL Azure

    Azure SQL DB 可以被配置成为 SQL Server 事务复制的一个订阅者( subscriber ). 主要应用场景有两种: 将您的数据迁移到 Azure SQL DB, 并且没有宕机时间 ...

  4. Microsoft: Get started with Dynamic Data Masking in SQL Server 2016 and Azure SQL

    Dynamic Data Masking (DDM) is a new security feature in Microsoft SQL Server 2016 and Azure SQL DB. ...

  5. 华为云计算IE面试笔记-请描述华为容灾解决方案全景图,并解释双活数据中心需要从哪些角度着手考虑双活设计

    容灾全景图: 按照距离划分:分为本地容灾 同城容灾 异地容灾  本地容灾包括本地高可用和本地主备.(本数据中心的两机房.机柜) 本地高可用这个方案为了保持业务的连续性,从两个层面来考虑: ①一个是从主 ...

  6. Azure Automation (6) 执行Azure SQL Job

    <Windows Azure Platform 系列文章目录> 因为China Azure SQL Database目前还没有SQL Job的功能,如果要异步执行SQL 存储过程,可以使用 ...

  7. SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)

    SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...

  8. Azure Cosmos DB (二) SQL API 操作

    一,引言 还记得国庆期间,我们学习了一下关于Azure Cosmos DB 的一些基础知识以及Azure Cosmos DB 的几种支持数据库类型.今天就开始分享一些实战操作,如何通过Azure Po ...

  9. Azure Cosmos DB (四) 使用EF的SQL API 异地冗余

    一,引言 上一篇文章中,我们介绍到使用了EF Core 与Cosmos DB SQL API 进行结合开发.同时,大家在开发过程中一定要记得EF Core 不支持Cosmos DB 的迁移.今天我们启 ...

随机推荐

  1. [整理]ASP.NET 中异常处理

    [整理]ASP.NET 中异常处理 1.直接通过重写Controller的OnException来处理异常 public class HomeController : Controller { pub ...

  2. PHP 设计模式 单例模式 工厂模式 注册模式

    1.工厂模式,工厂方法或者类生成对象,而不是在代码中直接new 2.单例模式,使某个类的对象仅允许创建一个 3.注册模式,全局共享和交换对象 项目文件目录 入口文件 index.php <?ph ...

  3. OC中实现锁

    熟悉多线程开发的同学对锁肯定不陌生,但是OC中如何实现锁呢?给大家科普一下. 首先构建一个测试用的类,假想它是我们的一个共享资源,method1与method2是互斥的,代码如下: @implemen ...

  4. Wordpress页脚

    <?php /** * The template for displaying the footer */ ?> <?php if ( apply_filters( 'show_fl ...

  5. Convert Expression to Reverse Polish Notation

    Given an expression string array, return the Reverse Polish notation of this expression. (remove the ...

  6. SpringBoot 构建RestFul API 含单元测试

    相关博文: 从消费者角度评估RestFul的意义 SpringBoot 构建RestFul API 含单元测试 首先,回顾并详细说明一下在快速入门中使用的  @Controller .  @RestC ...

  7. 深度学习框架之TensorFlow的概念及安装(ubuntu下基于pip的安装,IDE为Pycharm)

    2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源. 1.TensorFlow的概念 TensorFlow 是使用数据流图进行数值计算的开源软件库.也就是说,Tensor ...

  8. poj1093

    题意:给出一个句子和要求整理后每行包含的字符数,要求将其整理为一种总badness最小的形式.设每个空格长度为n,单个空格的badness计算公式为(n-1)^2.总badness等于所有空格的bad ...

  9. 多继承下的super()指向的不一定是直接父类

    常规情况 class Base: def __init__(self): print('Base.__init__') class A(Base): def __init__(self): super ...

  10. list 复制

    a=[1,2,3] b=a #b值改变,a也会改变 b[0]=90 print(a) [90,2,3] b=list(a) #这样修改b,a的值就不会改变