《Windows Azure Platform 系列文章目录》
本文介绍的是国内由世纪互联运维的Azure China。
本文是对笔者之前的文档Azure Backup (1) 将SQL Server 2012虚拟机中数据库备份到Azure Storage进行的补充。
希望笔者先阅读Azure Automation (1) 入门,对Azure Automation有基本的概念认识。
需求:
在之前的文档中Azure Backup (1) 将SQL Server 2012虚拟机中数据库备份到Azure Storage,
笔者介绍了使用SQL Server Job将SQL Database的备份文件bak备份到Azure Storage存储账户中。
但是这样会产生一个问题,随着这个SQL Job运行的时间越来越长,数据库备份文件bak会越来越多。如何设置Azure Automation计划任务,把老的数据库备份文件定期删除呢?
在这里笔者详细介绍一下相关的内容。
本文提到的技术细节有几点:
1.Azure AD账户,请参考:Windows Azure Active Directory (3) China Azure AD增加新用户
2.Azure订阅,请参考:Azure PowerShell (4) 使用PowerShell管理多个订阅
3.Azure存储账户名称,请参考:Windows Azure Storage (1) Windows Azure Storage Service存储服务
4.Azure存储账户container,请参考:
Windows Azure Storage (2) Windows Azure Storage Service存储服务之Blob详解(上)
Windows Azure Storage (3) Windows Azure Storage Service存储服务之Blob详解(中)
Windows Azure Storage (4) Windows Azure Storage Service存储服务之Blob Share Access Signature
本文的内容分为2个部分:
1.创建协同管理员Co-admin
2.定期删除存储账号的Runbook的编写
2.计划任务的调用
我们开始第一部分的内容
1.首先我们根据之前的内容,Windows Azure Active Directory (3) China Azure AD增加新用户,我们增加一个协同管理员Co-Admin
设置这个共同管理员的目的是,这个Azure AD账户([email protected]leizha.partner.onmschina.cn)只是用来运行Azure Automation,没有其他的权限。
newuser@leizha.partner.onmschina.cn在运行Azure Automation的时候,需要验证newuser的账户和密码
如果我们设置服务管理员[email protected]来运行Azure Automation的话,
默认的Azure AD密码过期时间是60天,如果超过60天我们将admin账户密码修改,会在验证密码的时候出错。
所以我们需要单独一个Azure AD账户来运行Azure Automation。
为了保证Demo的可读性,我们创建一个单独的Azure AD账户[email protected]
2.我们创建一个Automation命令为LeiAutomation。点击该Automation,如下图:
3.页面跳转,我们点击RUNBOOKS,然后点击 IMPORT,如下图。
同时导入Runbook。Runbook的下载地址:http://files.cnblogs.com/files/threestone/RemoveStorageBlobXDaysOld.rar
请注意在导入之前修改相应的参数,如下面的方框内容:
#设置Org ID [parameter(Mandatory=$true)] [String]$AzureOrgId="[YourAzureOrgID]", #设置Org ID的密码 [Parameter(Mandatory = $true)] [String]$Password="[YourAzureOrgIDPassword]", #设置订阅名称 [Parameter(Mandatory = $true)] [String]$AzureSubscriptionName="[YourSubscriptionName]", #设置存储账号 [Parameter(Mandatory = $true)] [String]$StorageAccountName="[YourStorageAccount]", #设置Container Name [Parameter(Mandatory = $true)] [String]$ContainerName="[YourStorageAccountContainerName]", #设置过期时间 [Parameter(Mandatory = $true)] [Int32]$DaysOld=[XDaysOld]
这样可以把某个存储账号下超过XDaysOld的旧数据删除,注意$DaysOld这个参数类型是Int32,赋值的参数不包含双引号。
4.修改参数完毕后,我们可以导入该RunBook。如下图:
5.导入完毕后,我们就可以查看到该RunBook
6.这里有重要的事情强调三遍:
Azure Automation RunBook的系统时间为UTC时区
Azure Automation RunBook的系统时间为UTC时区
Azure Automation RunBook的系统时间为UTC时区
我们的Automation RunBook的系统时间为UTC时区,我们需要修改为UTC时区为UTC+8北京时间
$ChinaTimeZone = [System.TimeZoneInfo]::FindSystemTimeZoneByID("China Standard Time")
$Start = [System.TimeZoneInfo]::ConvertTimefromUTC((get-date).ToUniversalTime(),$ChinaTimeZone)
"Starting: " + $Start.ToString("HH:mm:ss.ffffzzz")
7.记得导入Azure Automation RunBook之后,需要Publish这个RunBook
8.Publish之后,我们就可以在PUBLISHED里面看到发布的RUNBOOK项目
9.执行成功后,我们可以在Schedule里面设置计划任务。我们创建一个新的计划任务,选择LINK TO A NEW Schedule,如下图:
10.首先命名这个Schedule(计划任务)
11.然后设置计划任务频率。如下图:
我们设置Daily每天运行一次,开始时间为2015-08-28早上11点。
这里有重要的事情强调三遍:
Azure Automation Schedule的系统时间为UTC+8时区,是北京时间
Azure Automation Schedule的系统时间为UTC+8时区,是北京时间
Azure Automation Schedule的系统时间为UTC+8时区,是北京时间
12.最后设置这个RunBook的参数,图略。
这样我们就设计了计划任务,从2015-08-28上午11点开始执行Azure Automation,每天执行一次,没有过期时间。
这样Schedule(计划任务)每天就会清除Azure Storage Account的老旧数据。