Criar um grupo de disponibilidade Always On usando o PowerShell
Aplica-se: SQL Server
Esse tópico descreve como usar os cmdlets do PowerShell para criar e configurar um grupo de disponibilidade AlwaysOn usando o PowerShell no SQL Server. Um grupo de disponibilidade define um conjunto de bancos de dados de usuários que realizará o failover como uma única unidade e um conjunto de parceiros de failover, conhecido como réplicas de disponibilidade, que oferece suporte a failover.
Observação
Para obter uma introdução aos grupos de disponibilidade, confira Visão geral dos grupos de disponibilidade Always On (SQL Server).
Observação
Como alternativa para o uso dos cmdlets do PowerShell, você pode usar o assistente para Criar Grupo de Disponibilidade ou o Transact-SQL. Para obter mais informações, confira Usar a caixa de diálogo Novo Grupo de Disponibilidade (SQL Server Management Studio) ou Criar um grupo de disponibilidade (Transact-SQL).
Antes de começar
Pré-requisitos, restrições e recomendações
- Antes de criar um grupo de disponibilidade, verifique se cada instância de host do SQL Server reside em um nó diferente do WSFC (Windows Server Failover Clustering) de um único cluster de failover do WSFC. Verifique também se suas instâncias de servidor atendem aos outros pré-requisitos de instância de servidor, se todos os outros requisitos do Grupos de disponibilidade AlwaysOn são atendidos e se você está ciente das recomendações. Para obter mais informações, é altamente recomendável que você leia Pré-requisitos, restrições e recomendações para grupos de disponibilidade Always On (SQL Server).
Permissões
Requer a associação na função de servidor fixa sysadmin e a permissão de servidor CREATE AVAILABILITY GROUP, a permissão ALTER ANY AVAILABILITY GROUP ou a permissão CONTROL SERVER.
Usando o PowerShell para criar e configurar um grupo de disponibilidade
A tabela a seguir lista as tarefas básicas envolvidas na configuração de um grupo de disponibilidade e indica as tarefas com suporte nos cmdlets do PowerShell. As tarefas Grupos de disponibilidade AlwaysOn devem ser executadas na sequência em que são apresentadas na tabela.
Tarefa | Cmdlets do PowerShell (se disponíveis) ou instrução Transact-SQL | Local de execução da tarefa |
---|---|---|
Criar ponto de extremidade de espelhamento de banco de dados (uma vez por instância do SQL Server ) | New-SqlHadrEndPoint | Executar em cada instância de servidor que não tem ponto de extremidade de espelhamento de banco de dados. Para alterar um ponto de extremidade de espelhamento de banco de dados existente, use Set-SqlHadrEndpoint. |
Criar grupo de disponibilidade | Primeiro, use o cmdlet New-SqlAvailabilityReplica com o parâmetro -AsTemplate para criar um objeto da réplica de disponibilidade na memória para cada uma das duas réplicas de disponibilidade que você pretende incluir no grupo de disponibilidade. Em seguida, crie o grupo de disponibilidade usando o cmdlet New-SqlAvailabilityGroup e referenciando os objetos da réplica de disponibilidade. |
Execute na instância de servidor que deve hospedar a réplica primária inicial. |
Unir a réplica secundária ao grupo de disponibilidade | Join-SqlAvailabilityGroup | Execute em cada instância de servidor que hospeda uma réplica secundária. |
Preparar os banco de dados secundários | Backup-SqlDatabase e Restore-SqlDatabase | Crie backups na instância de servidor que hospeda a réplica primária. Restaure backups em cada instância de servidor que hospeda uma réplica secundária usando o parâmetro de restauração NoRecovery . Se os caminhos dos arquivos forem diferentes nos computadores que hospedam a réplica primária e a réplica secundária de destino, use também o parâmetro de restauração RelocateFile . |
Iniciar a sincronização de dados unindo cada banco de dados secundário ao grupo de disponibilidade | Add-SqlAvailabilityDatabase | Execute em cada instância de servidor que hospeda uma réplica secundária. |
Observação
Para executar as tarefas fornecidas, altere o diretório (cd) para as instâncias de servidor indicadas.
Usando o PowerShell
Configure e use o Provedor do SQL Server PowerShell.
Observação
Para exibir a sintaxe e um exemplo de um cmdlet, use o cmdlet Get-Help no ambiente do SQL Server PowerShell. Para obter mais informações, consulte Get Help SQL Server PowerShell.
Altere o diretório (cd) para a instância do servidor que hospedará a réplica primária.
Crie um objeto da réplica de disponibilidade na memória para a réplica primária.
Crie um objeto da réplica de disponibilidade na memória para cada réplica secundária.
Crie o grupo de disponibilidade.
Observação
O tamanho máximo de um nome de grupo de disponibilidade é 128 caracteres.
Ingresse a nova réplica secundária no grupo de disponibilidade; confira Ingressar uma réplica secundária em um grupo de disponibilidade (SQL Server).
Para cada banco de dados do grupo de disponibilidade, crie um banco de dados secundário restaurando backups recentes do banco de dados primário, usando RESTORE WITH NORECOVERY.
Ingresse cada novo banco de dados secundário no grupo de disponibilidade; confira Ingressar uma réplica secundária em um grupo de disponibilidade (SQL Server).
(opcional) Use o comando dir do Windows para verificar o conteúdo do novo grupo de disponibilidade.
Observação
Se as contas de serviço SQL Server das instâncias do servidor forem executadas em diferentes contas de usuário de domínio, em cada instância do servidor, crie um logon para a outra instância do servidor e conceda a permissão CONNECT a esse logon para o ponto de extremidade de espelhamento do banco de dados local.
Exemplo
O exemplo doe PowerShell a seguir cria e configura um grupo de disponibilidade simples denominado <myAvailabilityGroup>
com duas réplicas de disponibilidade e um banco de dados de disponibilidade. O exemplo:
Faz backup do
<myDatabase>
e de seu log de transações.Restaura o
<myDatabase>
e seu log de transações usando a opção -NoRecovery .Cria uma representação na memória da réplica primária, que será hospedada pela instância local do SQL Server (denominada
PrimaryComputer\Instance
).Cria uma representação na memória da réplica secundária, que será hospedada por uma instância do SQL Server (denominada
SecondaryComputer\Instance
).Cria um grupo de disponibilidade denominado
<myAvailabilityGroup>
.Une a réplica secundária ao grupo de disponibilidade.
Une o banco de dados secundário ao grupo de disponibilidade.
# 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 12 `
-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 12 `
-AsTemplate
# Create the availability group
New-SqlAvailabilityGroup `
-Name "<myAvailabilityGroup>" `
-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 "<myAvailabilityGroup>"
# Join the secondary database to the availability group.
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\<myAvailabilityGroup>" -Database "<myDatabase>"
Related Tasks
Para configurar uma instância de servidor para grupos de disponibilidade AlwaysOn
Para configurar um grupo de disponibilidade e propriedades de réplica
Alterar o modo de disponibilidade de uma réplica de disponibilidade (SQL Server)
Alterar o modo de failover de uma réplica de disponibilidade (SQL Server)
Criar ou configurar um ouvinte de grupo de disponibilidade (SQL Server)
Configurar backup em réplicas de disponibilidade (SQL Server)
Configurar o acesso somente leitura em uma réplica de disponibilidade (SQL Server)
Configurar o roteamento somente leitura para um grupo de disponibilidade (SQL Server)
Alterar o período de tempo limite da sessão de uma réplica de disponibilidade (SQL Server)
Para concluir a configuração do grupo de disponibilidade
Unir uma réplica secundária a um grupo de disponibilidade (SQL Server)
Preparar um banco de dados secundário manualmente para um grupo de disponibilidade (SQL Server)
Unir um banco de dados secundário a um grupo de disponibilidade (SQL Server)
Criar ou configurar um ouvinte de grupo de disponibilidade (SQL Server)
Maneiras alternativas de criar um grupo de disponibilidade
Usar a caixa de diálogo Assistente de Grupo de Disponibilidade (SQL Server Management Studio)
Usar a caixa de diálogo Novo Grupo de Disponibilidade (SQL Server Management Studio)
Para solucionar problemas de configuração dos grupos de disponibilidade AlwaysOn
Conteúdo relacionado
Blogs:
Configurando o AlwaysOn com o SQL Server PowerShell
Blogs da equipe do AlwaysOn do SQL Server: o blog oficial da equipe do AlwaysOn do SQL Server
Whitepapers:
White papers da equipe de consultoria do cliente do SQL Server
Consulte Também
O ponto de extremidade de espelhamento de banco de dados (SQL Server)
Visão geral dos Grupos de Disponibilidade AlwaysOn (SQL Server)