创建可用性组 (SQL Server PowerShell)
本主题说明如何使用 PowerShell cmdlet 在 SQL Server 2012 中通过 PowerShell 创建和配置 AlwaysOn 可用性组。 “可用性组”定义一组用户数据库,这些用户数据库将以支持故障转移的单个单元和一组故障转移伙伴(称作“可用性副本”)的形式进行故障转移。
注意 |
---|
有关可用性组的简介,请参阅AlwaysOn 可用性组概述 (SQL Server)。 |
开始之前:
先决条件、限制和建议
安全性
任务和相应 PowerShell Cmdlet 的摘要
设置和使用 SQL Server PowerShell 提供程序
**要创建和配置可用性组,请使用:**使用 PowerShell 创建和配置可用性组
**示例:**使用 PowerShell 创建可用性组
相关任务
相关内容
注意 |
---|
除了使用 PowerShell cmdlet 之外,您还可以使用“创建可用性组”向导或 Transact-SQL。 有关详细信息,请参阅使用“新建可用性组”对话框 (SQL Server Management Studio) 或创建可用性组 (Transact-SQL)。 |
开始之前
我们强烈建议您首先阅读此部分,再尝试创建您的第一个可用性组。
先决条件、限制和建议
- 创建可用性组之前,请先验证 SQL Server 主机实例分别位于单个 WSFC 故障转移群集的不同 Windows Server 故障转移群集 (WSFC) 节点上。 此外,还要验证您的服务器实例满足其他服务器实例先决条件,并且其他所有 AlwaysOn 可用性组 要求都得到满足且您知道有关建议。 有关详细信息,我们强烈建议您阅读针对 AlwaysOn 可用性组的先决条件、限制和建议 (SQL Server)。
[Top]
安全性
权限
需要 sysadmin 固定服务器角色的成员身份,以及 CREATE AVAILABILITY GROUP 服务器权限、ALTER ANY AVAILABILITY GROUP 权限或 CONTROL SERVER 权限。
[Top]
任务和相应 PowerShell Cmdlet 的摘要
下表列出了涉及配置可用性组的基本任务,并且指出了 PowerShell cmdlet 支持的任务。 必须按照任务在表中出现的顺序执行 AlwaysOn 可用性组 任务。
任务 |
PowerShell Cmdlet(如果可用)或 Transact-SQL 语句 |
执行任务的位置* |
||
---|---|---|---|---|
创建数据库镜像端点(每个 SQL Server 实例一次) |
New-SqlHadrEndPoint |
在缺少数据库镜像端点的每个服务器实例上执行。
|
||
创建可用性组 |
首先,将 New-SqlAvailabilityReplica cmdlet 与 -AsTemplate 参数一起使用,以便为您计划包括在可用性组中的两个可用性副本中的每一个都创建内存中可用性副本对象。 然后,通过使用 New-SqlAvailabilityGroup cmdlet 并引用您的可用性副本对象,创建可用性组。 |
在要承载初始主副本的服务器实例上执行。 |
||
将辅助副本联接到可用性组 |
Join-SqlAvailabilityGroup |
在承载辅助副本的各服务器实例上执行。 |
||
准备辅助数据库 |
Backup-SqlDatabase 和Restore-SqlDatabase |
在承载主副本的服务器实例上创建备份。 使用 NoRecovery 还原参数在承载辅助副本的各服务器实例上还原备份。 如果文件路径在承载主副本和目标辅助副本的计算机之间存在差异,还要使用 RelocateFile 还原参数。 |
||
通过将各辅助数据库联接到可用性组,开始数据同步 |
Add-SqlAvailabilityDatabase |
在承载辅助副本的各服务器实例上执行。 |
* 若要执行某个给定任务,请将目录 (cd) 更改为指示的服务器实例。
[Top]
设置和使用 SQL Server PowerShell 提供程序
[Top]
使用 PowerShell 创建和配置可用性组
注意 |
---|
若要查看给定 cmdlet 的语法和示例,请使用 SQL Server PowerShell 环境中的 Get-Help cmdlet。 有关详细信息,请参阅获取 SQL Server PowerShell 帮助。 |
将目录 (cd) 更改为承载主副本的服务器实例。
为主副本创建内存中可用性副本对象。
为每个辅助副本创建内存中可用性副本对象。
创建可用性组。
注意 可用性组名称的最大长度为 128 个字符。
将新的辅助副本联接到可用性组。 有关详细信息,请参阅将辅助副本联接到可用性组 (SQL Server)。
对于可用性组中的每个数据库,通过使用 RESTORE WITH NORECOVERY 还原主数据库的最近的备份,创建辅助数据库。
将每个新的辅助数据库联接到可用性组。 有关详细信息,请参阅将辅助副本联接到可用性组 (SQL Server)。
或者,使用 Windows dir 命令可以验证新的可用性组的内容。
注意 |
---|
如果该服务器实例的 SQL Server 服务帐户基于不同的域用户帐户运行,则在各服务器实例上,为其他服务器实例创建一个登录名,并且授予此登录名连接本地数据库镜像端点的权限。 |
[Top]
示例:使用 PowerShell 创建可用性组
下面的 PowerShell 示例创建并配置一个名为 MyAG 的简单可用性组,该可用性组具有两个可用性副本和一个可用性数据库。 示例:
备份 MyDatabase 及其事务日志。
使用 -NoRecovery 选项还原 MyDatabase 及其事务日志。
创建主副本的内存中表示形式,它将由 SQL Server 的本地实例(名为 PrimaryComputer\Instance)承载。
创建辅助副本的内存中表示形式,它将由 SQL Server 的实例(名为 SecondaryComputer\Instance)承载。
创建名为 MyAG 的可用性组。
将辅助副本联接到该可用性组。
将辅助数据库联接到该可用性组。
# Backup my database and its log on the primary
Backup-SqlDatabase `
-Database "MyDatabase" `
-BackupFile "\\share\backups\MyDatabase.bak" `
-ServerInstance "PrimaryComputer\Instance"
Backup-SqlDatabase `
-Database "MyDatabase" `
-BackupFile "\\share\backups\MyDatabase.log" `
-ServerInstance "PrimaryComputer\Instance" `
-BackupAction Log
# Restore the database and log on the secondary (using NO RECOVERY)
Restore-SqlDatabase `
-Database "MyDatabase" `
-BackupFile "\\share\backups\MyDatabase.bak" `
-ServerInstance "SecondaryComputer\Instance" `
-NoRecovery
Restore-SqlDatabase `
-Database "MyDatabase" `
-BackupFile "\\share\backups\MyDatabase.log" `
-ServerInstance "SecondaryComputer\Instance" `
-RestoreAction Log `
-NoRecovery
# Create an in-memory representation of the primary replica.
$primaryReplica = New-SqlAvailabilityReplica `
-Name "PrimaryComputer\Instance" `
-EndpointURL "TCP://PrimaryComputer.domain.com:5022" `
-AvailabilityMode "SynchronousCommit" `
-FailoverMode "Automatic" `
-Version 11 `
-AsTemplate
# Create an in-memory representation of the secondary replica.
$secondaryReplica = New-SqlAvailabilityReplica `
-Name "SecondaryComputer\Instance" `
-EndpointURL "TCP://SecondaryComputer.domain.com:5022" `
-AvailabilityMode "SynchronousCommit" `
-FailoverMode "Automatic" `
-Version 11 `
-AsTemplate
# Create the availability group
New-SqlAvailabilityGroup `
-Name "MyAG" `
-Path "SQLSERVER:\SQL\PrimaryComputer\Instance" `
-AvailabilityReplica @($primaryReplica,$secondaryReplica) `
-Database "MyDatabase"
# Join the secondary replica to the availability group.
Join-SqlAvailabilityGroup -Path "SQLSERVER:\SQL\SecondaryComputer\Instance" -Name "MyAG"
# Join the secondary database to the availability group.
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\MyAG" -Database "MyDatabase"
相关任务
为 AlwaysOn 可用性组配置服务器实例
配置可用性组和副本属性
完成可用性组配置
用于创建可用性组的其他方法
解决 AlwaysOn 可用性组配置问题
[Top]
相关内容
博客:
AlwaysON - HADRON 学习系列:启用了 HADRON 的数据库的工作线程池用法
使用 SQL Server PowerShell 配置 AlwaysOn
视频:
Microsoft SQL Server Code-Named "Denali" AlwaysOn 系列,第一部分:介绍下一代高可用性解决方案
Microsoft SQL Server Code-Named "Denali" AlwaysOn 系列,第二部分:使用 AlwaysOn 生成关键任务高可用性解决方案
白皮书:
用于高可用性和灾难恢复的 Microsoft SQL Server AlwaysOn 解决方案指南
[Top]