前段时间有个客户有如下需求,将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

备份到本地

最新文章

  1. iOS 应用的生命周期
  2. 如何使用openssl生成RSA公钥和私钥对
  3. C#的变迁史 - C# 4.0篇
  4. UI中经常出现的下拉框下拉自动筛选效果的实现
  5. C#单例模式的三种写法
  6. HDU 5235 Friends (2015 Multi-University Training Contest 2 搜索+剪枝)
  7. SGU 168
  8. 回调函数的意义以及python实现
  9. 重写Collections实现自定义排序
  10. CreateFileMapping共享内存时添加Global的作用
  11. 系统运维-hub, repeater, switch, router初览
  12. DeepLearning.ai学习笔记(三)结构化机器学习项目--week1 机器学习策略
  13. 关于 min_25 筛的入门以及复杂度证明
  14. 【Monkey】Monkey稳定性测试常用命令
  15. Java编程的逻辑 (90) - 正则表达式 (下 - 剖析常见表达式)
  16. Python程序中的进程操作
  17. canvas-arc.html
  18. 洗礼灵魂,修炼python(46)--巩固篇—如虎添翼的property
  19. Java 下一代: 函数式编码风格——Groovy、Scala 和 Clojure 共享的函数结构及其优势
  20. java web 程序---猜数字游戏

热门文章

  1. jdk1.8.0_45源码解读——HashMap的实现
  2. js 正则之 检测素数
  3. Sublime Text 2 绿色汉化版 x64
  4. ML—机器学习常用包(持续更新….)
  5. 【CodeForces】925 C.Big Secret 异或
  6. shift 用法
  7. Linux中断(interrupt)子系统之三:中断流控处理层【转】
  8. 『实践』Yalmip+Ipopt+Cplex使用手册
  9. android view的多种移动方式(测试集合)
  10. 深入迁出mybatis系列