PowerShell 操作 Azure SQL Active Geo-Replication

前文中我们比较全面的介绍了 Azure SQL Database Active Geo-Replication 的主要特点和优势。接下来我们将从自动化的角度介绍如何通过 PowerShell 在项目中实现 Active Geo-Replication 的操作。

从 Azure PowerShell 开始

MS 专门为管理 Azure 写了一套 PowerShell 组件称为 Azure PowerShell。我们就是要使用这套组件中提供的接口来操作 Active Geo-Replication。遗憾的是这套组件不会被 Windows 默认安装。所以请参考 MSDN 上的说明先安装 Azure PowerShell。不喜欢读 MSDN 的同学可以参考笔者博文《Azure 基础:用 PowerShell 自动发布 CloudServices》中的 “安装 powershell 的 azure module”小节,会简洁一些。

在 PowerShell 中登录 Azure

操作 Azure 中的任何资源都需要进行身份认证,所以第一步需要在 PowerShell 中登录 Azure,并且选择正确的 Azure subscription。
登录 Azure 的命令:

Login-AzureRmAccount

请按照提示输入您的账号和密码。然后选择当前的 subscription:

Select-AzureRmSubscription -SubscriptionId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Select-AzureRmSubscription 命令的使用场景是:当您有多个 subscription 时,需要通过设置当前 subscription 的方式告诉 PowerShell 命令到底是操作的哪些资源。当然,如果您只有一个 subscription的话就不需要执行这个命令。

添加一个从数据库

终于进入正题了!假设我们有一个叫 blogdb 的数据库,它运行在数据库服务器 blogtestsvr 中, 这个数据库服务器被部署在 East Asia (东亚),我们打算为 blogdb 创建一个从数据库,从数据库所运行的数据库服务器 blogtestsvr2 部署在 Central US (美国中部)。blogtestsvr 和 blogtestsvr2 都属于同一个资源组 sqltest。如果您还不是太了解主从数据库或是 Active Geo-Replication 的概念,请先移步这里

New-AzureRmSqlDatabaseSecondary 命令

New-AzureRmSqlDatabaseSecondary 是专门为一个已经存在的数据库创建从数据库的命令,并且在从数据库创建完成后开始数据的复制。还有一个叫 Start-AzureSqlDatabaseCopy 的命令可以做同样的事情,但 Start-AzureSqlDatabaseCopy 命令的功能过于繁杂,所以需要创建从数据库时最好还是使用 New-AzureRmSqlDatabaseSecondary。下面的命令为 blogdb 创建第一个从数据库:

$db = Get-AzureRmSqlDatabase –DatabaseName "blogdb" -ResourceGroupName "sqltest" -ServerName "blogtestsvr"
$secondaryLink = $db | New-AzureRmSqlDatabaseSecondary –PartnerResourceGroupName "sqltest" –PartnerServerName "blogtestsvr2" -AllowConnections "All"

先去 portal 上检查一下结果:

蓝色的六边形表示主数据库,绿色的六边形表示我们刚创建的从数据库,注意从数据库显示的状态为 ”Readable”。同时数据库被标识在地图上的位置就是真实的数据中心的地理位置。上图说明 PowerShell 命令已经成功的为blogdb创建了从数据库。简单说说上面的命令:
Get-AzureRmSqlDatabase 命令用来获得主数据库的信息,然后传递给 New-AzureRmSqlDatabaseSecondary 命令,不然的话 New-AzureRmSqlDatabaseSecondary 的参数列表会很长且含义不清晰。
New-AzureRmSqlDatabaseSecondary 命令的参数主要用来指出从数据库所在的 resource group, 和 server name。还有 AllowConnections 参数,请把它配置为 "All"。

注意事项

在成功的为主数据库创建了从数据库后,让我们一起来看看一些需要注意的事项。
细心的朋友们可能已经注意到了,新创建的从数据库和主数据库的名字是一样的。并且还有一个不太直观东西是也一样的:Service level,说白了就是从数据库和主数据库收的钱是一样的!当然您可以单独设置从数据库的 Service level 从而节省预算。
从数据库的创建是被分成两个过程的,即创建数据库和复制数据。数据库的创建可能很快,但复制数据就不一定了,主要看库的大小。由于这两步都完成后 New-AzureRmSqlDatabaseSecondary 命令才会返回,所以当您的数据库比较大时,这条命令执行的时间会比较长。
还有就是当同名的数据库已经存在时,New-AzureRmSqlDatabaseSecondary 命令会返回错误:

移除从数据库

知道了怎么创建从数据库当然也要能够把它移除,下面我们使用 Remove-AzureRmSqlDatabaseSecondary 命令把刚才创建的从数据库移除掉。

$db = Get-AzureRmSqlDatabase –DatabaseName "blogdb" -ResourceGroupName "sqltest" -ServerName "blogtestsvr"
$secondaryLink = $db | Get-AzureRmSqlDatabaseReplicationLink –PartnerResourceGroup "sqltest" –PartnerServerName "blogtestsvr2"
$secondaryLink | Remove-AzureRmSqlDatabaseSecondary

命令本身没什么可解释的,执行完成后去 portal 上看看,从数据库已经不见了。噢,等等… 好像从数据库并没有被删除掉啊!是的,Remove-AzureRmSqlDatabaseSecondary 命令只是移除了主从数据库之间的关系,而不会删除从数据库。相反,此时的从数据库已经变成了一个可读写的独立数据库。

灾难恢复

下面让我们把焦点定位到 Active Geo-Replication 的主要用例:灾难恢复。当故障发生在主数据库时。我们需要通过 Set-AzureRmSqlDatabaseSecondary 命令尽快的把一个从数据库转换为主数据库。

$db = Get-AzureRmSqlDatabase –DatabaseName "blogdb" –ResourceGroupName "sqltest" –ServerName "blogtestsvr2”
$db | Set-AzureRmSqlDatabaseSecondary -PartnerResourceGroupName "sqltest" -Failover

看看 portal 上现在的情况:

搞定!原来只读的从数据库已经变成了可读写的主数据库。注意上图中主从数据库各自的位置,是不是它们已经转换了角色呢!
接下来让我们简单了解下 Set-AzureRmSqlDatabaseSecondary 命令,及使用中需要注意的事项。
Set-AzureRmSqlDatabaseSecondary 命令的执行也分为两个阶段。首先是切换数据复制操作的同步模式,完成所有到从数据库的数据复制 (切换角色前要保证主从库中的内容是一样的)。然后是切换主从数据库的角色。角色切换完成后就开始从新的主数据库向新的从数据库同步数据。当然切换的过程是有代价的,MSDN 上说大概有0到25秒的时间数据库将不可用,但这个时间不会超过1分钟。

总结

本文使用 Azure PowerShell 提供的接口实现了创建、移除及恢复 Azure SQL Database Active Geo-Replication 的操作。虽然看上去 PowerShell 脚本还挺多的 (主要是参数多),但涉及到的核心接口只有三个:New-AzureRmSqlDatabaseSecondary,Remove-AzureRmSqlDatabaseSecondary 和 Set-AzureRmSqlDatabaseSecondary。鉴于个人知识有限,里面的很多细节都没有涉及,全当是抛砖引玉吧。

时间: 2024-08-02 19:10:03

PowerShell 操作 Azure SQL Active Geo-Replication的相关文章

PowerShell 操作 Azure SQL Active Geo-Replication 实战

<Azure SQL Database Active Geo-Replication简介>一文中,我们比较全面的介绍了 Azure SQL Database Active Geo-Replication 的主要特点和优势.接下来我们将从自动化的角度,介绍如何通过 PowerShell 在项目中实现 Active Geo-Replication 操作. 一.从Azure PowerShell开始 MS 专门为管理 Azure 写了一套 PowerShell 组件称为 Azure PowerShe

用SSMS连接Azure Sql Database 与连接本地库的一些操作区别

背景 我们知道Azure Sql Database 可以降低运维成本.是一种Pass模式,有资源弹性设置,可以自由调整资源自动对应不同业务高峰(当然也可以降低费用成本),也方便项目后期的资源扩展,以及一些其他优点或特性,这就不一一列出.那么数据库开发工程师来说,操作Azure Sql Database 与我们使用的SSMS(Microsoft Sql Server Management Studio)在本地库上操作有哪些区别. 我们简单从如下几部分进行比较 1.创建对象比较:(简单列一下Azur

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

嫌长不看版 本文介绍了通过复制和导出两个操作,将 Azure SQL 数据库中的内容转移至其他位置(例如本地环境)的具体做法.借此可以帮助用户在 Azure 中运行数据库的同时,在本地或指定的其他位置额外保留一个副本,满足制度或业务等各方面的要求. 操作细节版 很多用户向小编提出了这样一个问题:已经在使用 Azure SQL 数据库服务,虽然该服务有非常完善的数据备份和灾备机制,但出于公司制度或其他方面的要求,需要定期将数据库的完整内容下载到本地保存,哪怕手工操作也可以. 这当然是可以的,不过首

Azure SQL Database 时间点还原(Point in Time Restore)功能

微软中国TechNet 7 Oct 2014 9:17 PM Comments 0 Likes 原文地址:http://blogs.technet.com/b/azuretw/archive/2014/10/06/azure-sql-database-point-in-time-restore.aspx 本篇文章,将说明 Azure SQL Database 的时间点还原( Point in Time Restore )功能,这项功能在 Azure SQL Database 的 Basic.St

使用PowerShell在Azure China创建Data Warehouse

微软的Azure Data Warehouse是基于MPP架构的分布式系统: Control Node负责管理系统和接受用户的请求,Compute Node负责计算. 目前在国内Azure Data Warehouse已经落地了.可以使用新的Portal页面进行管理,也可以使用PowerShell进行管理. 本文将介绍用PowerShell的管理方式.包括创建.Scale out.Suspend和Resume. 1 环境准备 登陆Azure China,并创建Resource Group $my

[转]Azure 表存储和 Windows Azure SQL Database - 比较与对照

本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manheim 审阅者:Brad Calder.Jai Haridas.Paolo Salvatori.Silvano Coriani.Prem Mehra.Rick Negrin.Stuart Ozer.Michael Thomassy.Ewan Fairweather 本主题比较  支持的两种结构化存储类

Global Azure SQL Server Database 导出和导入配置介绍

我们前一篇文章介绍了Global Azure SQL Server Database的备份和还原配置介绍,今天我们就说说Global Azure SQL Server Database的导出和导入功能介绍,其实说到导出和导入,我们大家都会想到,其实就是将数据导出成一种格式,然后在另外一个环境中导入即可,该功能有点类似备份和还原的功能,也可以理解为迁移的功能,但是按照官网的字段定义就是导出和导入,在Global Azure SQL Server Database的导出原理就是将数据库整个架构导出到

Global Azure SQL Server副本功能配置介绍

我们前面几篇文章介绍了Global Azure SQL Server Database的Backup.Recovery.Export.Import等相关功能 ,今天我们介绍一下Global Azure SQL Server Database的副本功能,其实说到副本两个字,言外之意就是备份,在Global Azure SQL Server Database的副本配置其实就跟Backup及Export.Import的工作原理一样,副本就是将正在运行的Global Azure SQL Server D

Global Azure SQL Server Database异地复制配置介绍

近期写了很多关于Azure的相关文章,前几篇介绍了VPN的相关配置,今天就说说Azure上的SQL Server相关的配置信息:今天呢,我们主要介绍的是在Global Azure上配置数据库的异地复制功能,通过了解,在Azure上启用异地复制的工作原理很我们平常对SQL Server的异地复制备份是有差别的,在Azure 上配置完SQL 异地复制后,在异地是无法连接到服务器的,而且也是无法打开备份数据的,最为重要的一点是,在Azure上无法演练SQL异地复制的整个效果的,当然我们也不能质疑Azu