Partilhar via


Criar um grupo de disponibilidade Always On usando o PowerShell

Aplica-se a:SQL Server

Este tópico descreve como usar cmdlets do PowerShell para criar e configurar um grupo de disponibilidade Always On usando o PowerShell no SQL Server. Um grupo de disponibilidade define um conjunto de bancos de dados de usuário que serão transferidos em caso de falha como uma única unidade e um conjunto de parceiros de failover, conhecidos como réplicas de disponibilidade, que oferecem suporte à transferência em caso de falha.

Observação

Para obter uma introdução aos grupos de disponibilidade, consulte Visão geral dos grupos de disponibilidade Always On (SQL Server).

Observação

Como alternativa ao uso de cmdlets do PowerShell, você pode usar o assistente Criar Grupo de Disponibilidade ou o Transact-SQL. Para obter mais informações, consulte 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 dentro de um único cluster de failover WSFC (Cluster de Failover do Windows Server). Além disso, verifique se as instâncias do servidor atenderam aos outros pré-requisitos da instância do servidor e se todos os outros requisitos dos grupos de disponibilidade Always On foram atendidos e se você está ciente das recomendações. Para obter mais informações, é altamente recomendável ler Pré-requisitos, restrições e recomendações para grupos de disponibilidade Always On (SQL Server).

Permissions

Requer associação à função de servidor fixa sysadmin e as permissões de servidor CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP ou 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 aquelas que são suportadas pelos cmdlets do PowerShell. As tarefas dos grupos de disponibilidade Always On devem ser executadas na sequência em que são apresentadas na tabela.

Tarefa Cmdlets do PowerShell (caso disponíveis) ou instrução do Transact-SQL Onde executar a tarefa
Criar uma endpoint de espelhamento de base de dados (uma vez por instância de SQL Server) New-SqlHadrEndPoint Execute em cada instância do servidor que não possui 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 de réplica de disponibilidade na memória para cada uma das duas réplicas de disponibilidade que você planeja incluir no grupo de disponibilidade.

Em seguida, crie o grupo de disponibilidade usando o cmdlet New-SqlAvailabilityGroup e fazendo referência aos seus objetos de réplica de disponibilidade.
Execute na instância do servidor que hospedará a réplica primária inicial.
Associar réplica secundária ao grupo de disponibilidade Join-SqlAvailabilityGroup Execute em cada instância do servidor que hospeda uma réplica secundária.
Preparar o banco de dados secundário Backup-SqlDatabase e Restore-SqlDatabase Crie backups na instância do servidor que hospeda a réplica primária.

Restaure backups em cada instância do servidor que hospeda uma réplica secundária, usando o parâmetro de restauração NoRecovery . Se os caminhos de arquivo forem diferentes entre os 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 .
Inicie a sincronização de dados associando cada banco de dados secundário ao grupo de disponibilidade Add-SqlAvailabilityDatabase Execute em cada instância do servidor que hospeda uma réplica secundária.

Observação

Para executar as tarefas fornecidas, altere o diretório (cd) para a instância ou instâncias do 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 determinado cmdlet, use o cmdlet Get-Help no ambiente do SQL Server PowerShell. Para obter mais informações, consulte Obter ajuda do 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 de réplica de disponibilidade na memória para a réplica primária.

  3. Crie um objeto de réplica de disponibilidade na memória para cada uma das réplicas secundárias.

  4. Crie o grupo de disponibilidade.

    Observação

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

  5. Junte a nova réplica secundária ao grupo de disponibilidade, consulte Associar uma réplica secundária a um grupo de disponibilidade (SQL Server).

  6. Para cada banco de dados no grupo de disponibilidade, crie um banco de dados secundário restaurando backups recentes do banco de dados primário, usando RESTORE WITH NORECOVERY.

  7. Junte cada novo banco de dados secundário ao grupo de disponibilidade, consulte Associar uma réplica secundária a um grupo de disponibilidade (SQL Server).

  8. (facultativo) Use o comando dir do Windows para verificar o conteúdo do novo grupo de disponibilidade.

Observação

Se as contas de serviço do SQL Server das instâncias de servidor forem executadas sob contas de usuário de domínios diferentes, em cada instância de servidor, crie um logon para a outra instância de servidor e conceda a esse logon a permissão de CONNECT ao ponto de extremidade de espelhamento do banco de dados local.

Example

O exemplo do PowerShell a seguir cria e configura um grupo de disponibilidade simples nomeado <myAvailabilityGroup> com duas réplicas de disponibilidade e um banco de dados de disponibilidade. O exemplo:

  1. Efetua o backup de <myDatabase> e o seu log de transações.

  2. Restaura <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 (chamada 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 (chamada SecondaryComputer\Instance).

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

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

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

Tarefas relacionadas

Para configurar uma instância de servidor para Grupos de Disponibilidade Always On

Para configurar o grupo de disponibilidade e as propriedades de réplica

Para concluir a configuração do grupo de disponibilidade

Formas alternativas de criar um grupo de disponibilidade

Para solucionar problemas de configuração de Grupos de Disponibilidade Always On

Conteúdo relacionado

Ver também

O endpoint de espelhamento de base de dados (SQL Server)
Visão geral dos grupos de disponibilidade Always On (SQL Server)