PowerShell 操作 Azure SQL Active Geo-Replication

前端之家收集整理的这篇文章主要介绍了PowerShell 操作 Azure SQL Active Geo-Replication前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

》中的 “安装 powershell 的 azure module”小节,会简洁一些。

登录 Azure

登录 Azure,并且选择正确的 Azure subscription。登录 Azure 的命令:

Login-AzureRmAccount

提示输入您的账号和密码。

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

添加一个从数据库

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

sqlDatabaseSecondary 命令

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

= Get-AzureRmsqlDatabase –DatabaseName -ResourceGroupName sqltest -ServerName = | New-AzureRmsqlDatabaseSecondary –PartnerResourceGroupName sqltest –PartnerServerName -AllowConnections

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

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

数据库

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

= Get-AzureRmsqlDatabase –DatabaseName -ResourceGroupName sqltest -ServerName = | Get-AzureRmsqlDatabaseReplicationLink –PartnerResourceGroup sqltest –PartnerServerName | Remove-AzureRmsqlDatabaseSecondary

数据库已经不见了。噢,等等… 好像从数据库并没有被删除掉啊!是的,Remove-AzureRmsqlDatabaseSecondary 命令只是移除了主从数据库之间的关系,而不会删除数据库。相反,此时的从数据库已经变成了一个可读写的独立数据库

数据库时。我们需要通过 Set-AzureRmsqlDatabaseSecondary 命令尽快的把一个从数据库转换为主数据库

= Get-AzureRmsqlDatabase –DatabaseName –ResourceGroupName sqltest –ServerName sqlDatabaseSecondary -PartnerResourceGroupName sqltest

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

sql Database Active Geo-Replication 的操作。虽然看上去 PowerShell 脚本还挺多的 (主要是参数多),但涉及到的核心接口只有三个:New-AzureRmsqlDatabaseSecondary,Remove-AzureRmsqlDatabaseSecondary 和 Set-AzureRmsqlDatabaseSecondary。鉴于个人知识有限,里面的很多细节都没有涉及,全当是抛砖引玉吧。

猜你在找的Azure相关文章