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.

  1. Altere o diretório (cd) para a instância do servidor que hospedará a réplica primária.

  2. Crie um objeto da réplica de disponibilidade na memória para a réplica primária.

  3. Crie um objeto da réplica de disponibilidade na memória para cada réplica secundária.

  4. Crie o grupo de disponibilidade.

    Observação

    O tamanho máximo de um nome de grupo de disponibilidade é 128 caracteres.

  5. 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).

  6. 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.

  7. 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).

  8. (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:

  1. Faz backup do <myDatabase> e de seu log de transações.

  2. Restaura o <myDatabase> e seu log de transações usando a opção -NoRecovery .

  3. 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).

  4. 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).

  5. Cria um grupo de disponibilidade denominado <myAvailabilityGroup>.

  6. Une a réplica secundária ao grupo de disponibilidade.

  7. 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

Para concluir a configuração do grupo de disponibilidade

Maneiras alternativas de criar um grupo de disponibilidade

Para solucionar problemas de configuração dos grupos de disponibilidade AlwaysOn

Conteúdo relacionado

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)