Delen via


Een AlwaysOn-beschikbaarheidsgroep maken met Behulp van PowerShell

Van toepassing op:SQL Server

In dit onderwerp wordt beschreven hoe u PowerShell-cmdlets gebruikt om een AlwaysOn-beschikbaarheidsgroep te maken en configureren met behulp van PowerShell in SQL Server. Een beschikbaarheidsgroep definieert een set gebruikersdatabases die een failover uitvoeren als één eenheid en een set failoverpartners, ook wel beschikbaarheidsreplica's genoemd, die failover ondersteunen.

Opmerking

Zie Overzicht van AlwaysOn-beschikbaarheidsgroepen (SQL Server) voor een inleiding tot beschikbaarheidsgroepen.

Opmerking

Als alternatief voor het gebruik van PowerShell-cmdlets kunt u de wizard Beschikbaarheidsgroep maken of Transact-SQL gebruiken. Zie Het dialoogvenster Nieuwe beschikbaarheidsgroep (SQL Server Management Studio) gebruiken ofEen beschikbaarheidsgroep (Transact-SQL) maken voor meer informatie.

Voordat u begint

Vereisten, beperkingen en aanbevelingen

  • Controleer voordat u een beschikbaarheidsgroep maakt of de hostinstanties van SQL Server zich op een ander WSFC-knooppunt (Windows Server Failover Clustering) van één WSFC-failovercluster bevinden. Controleer ook of uw serverexemplaren voldoen aan de andere vereisten voor serverexemplaren en of aan alle andere vereisten voor AlwaysOn-beschikbaarheidsgroepen wordt voldaan en dat u op de hoogte bent van de aanbevelingen. Voor meer informatie raden we u ten zeerste aan vereisten, beperkingen en aanbevelingen voor AlwaysOn-beschikbaarheidsgroepen (SQL Server) te lezen.

Permissions

Vereist lidmaatschap van de vaste serverrol sysadmin en de servermachtiging 'CREATE AVAILABILITY GROUP', 'ALTER ANY AVAILABILITY GROUP', of 'CONTROL SERVER'.

PowerShell gebruiken om een beschikbaarheidsgroep te maken en configureren

De volgende tabel bevat de basistaken die betrokken zijn bij het configureren van een beschikbaarheidsgroep en geeft aan welke taken worden ondersteund door PowerShell-cmdlets. De taken van Always On-beschikbaarheidsgroepen moeten worden uitgevoerd in de volgorde waarin ze in de tabel worden weergegeven.

Opdracht PowerShell-cmdlets (indien beschikbaar) of Transact-SQL-instructie Waar taken moeten worden uitgevoerd
Eindpunt voor databasespiegeling maken (eenmaal per SQL Server-exemplaar) New-SqlHadrEndPoint Voer uit op elke serverinstantie die geen eindpunt voor databasespiegeling heeft.

Als u een bestaand eindpunt voor databasespiegeling wilt wijzigen, gebruikt u Set-SqlHadrEndpoint.
Beschikbaarheidsgroep maken Gebruik eerst de cmdlet New-SqlAvailabilityReplica met de parameter -AsTemplate om een in-memory availability-replica-object te maken voor elk van de twee beschikbaarheidsreplica's die u wilt opnemen in de beschikbaarheidsgroep.

Maak vervolgens de beschikbaarheidsgroep met de cmdlet New-SqlAvailabilityGroup aan en verwijs naar uw beschikbaarheidsreplicaobjecten.
Voer uit op de serverinstantie die de eerste primaire replica host.
Secundaire replica toevoegen aan beschikbaarheidsgroep Join-SqlAvailabilityGroup Voer uit op elke serverexemplaar die een host is van een secundaire replica.
De secundaire database voorbereiden Backup-SqlDatabase en Restore-SqlDatabase Maak een backup op het serverexemplaar dat de primaire replica host.

Herstel back-ups op elke serverexemplaar dat een secundaire replica host, met behulp van de herstelparameter NoRecovery. Als de bestandspaden verschillen tussen de computers waarop de primaire replica en de secundaire doelreplica worden gehost, gebruikt u ook de parameter RelocateFile-herstel .
Gegevenssynchronisatie starten door elke secundaire database toe te voegen aan een beschikbaarheidsgroep Add-SqlBeschikbaarheidsDatabase Voer uit op elke serverexemplaar waarop een secundaire replica wordt gehost.

Opmerking

Als u de opgegeven taken wilt uitvoeren, navigeert u naar de map (cd) op de aangegeven serverinstantie of instanties.

PowerShell gebruiken

De SQL Server PowerShell-provider instellen en gebruiken.

Opmerking

Als u de syntaxis en een voorbeeld van een bepaalde cmdlet wilt weergeven, gebruikt u de Cmdlet Get-Help in de SQL Server PowerShell-omgeving. Zie Help voor SQL Server PowerShell voor meer informatie.

  1. Verander de directory (cd) naar het serverexemplaar dat de primaire kopie zal hosten.

  2. Maak een in-memory beschikbaarheidsreplica-object voor de primaire replica.

  3. Maak een in-memory beschikbaarheidsreplica-object voor elk van de secundaire replica's.

  4. Maak de beschikbaarheidsgroep.

    Opmerking

    De maximale lengte voor de naam van een beschikbaarheidsgroep is 128 tekens.

  5. Voeg de nieuwe secundaire replica toe aan de beschikbaarheidsgroep. Zie Een secundaire replica toevoegen aan een beschikbaarheidsgroep (SQL Server).

  6. Maak voor elke database in de beschikbaarheidsgroep een secundaire database door recente back-ups van de primaire database te herstellen met BEHULP van RESTORE WITH NORECOVERY.

  7. Voeg elke nieuwe secundaire database toe aan de beschikbaarheidsgroep. Zie Een secundaire replica toevoegen aan een beschikbaarheidsgroep (SQL Server).

  8. (optioneel) Gebruik de Opdracht Windows Dir om de inhoud van de nieuwe beschikbaarheidsgroep te controleren.

Opmerking

Als de SQL Server-serviceaccounts van de serverinstanties worden uitgevoerd onder verschillende domeingebruiker accounts, maakt u op elke serverinstantie een login voor de andere serverinstantie en geeft u deze login CONNECT-rechten op het lokale databasespiegelingseindpunt.

Example

In het volgende PowerShell-voorbeeld wordt een eenvoudige beschikbaarheidsgroep <myAvailabilityGroup> gemaakt en geconfigureerd met twee beschikbaarheidsreplica's en één beschikbaarheidsdatabase. Het voorbeeld:

  1. Maakt een back-up van <myDatabase> en het bijbehorende transactielogboek.

  2. Herstelt <myDatabase> en het transactielogboek met behulp van de optie -NoRecovery .

  3. Hiermee maakt u een in-memory weergave van de primaire replica, die wordt gehost door het lokale exemplaar van SQL Server (benoemd PrimaryComputer\Instance).

  4. Hiermee maakt u een in-memory weergave van de secundaire replica, die wordt gehost door een exemplaar van SQL Server (benoemd SecondaryComputer\Instance).

  5. Hiermee maakt u een beschikbaarheidsgroep met de naam <myAvailabilityGroup>.

  6. Voegt de secundaire replica toe aan de beschikbaarheidsgroep.

  7. Voegt de secundaire database toe aan de beschikbaarheidsgroep.

# 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>"  

Gerelateerde taken

Een serverexemplaar configureren voor AlwaysOn-beschikbaarheidsgroepen

Eigenschappen van beschikbaarheidsgroep en replica configureren

Configuratie van beschikbaarheidsgroepen voltooien

Alternatieve manieren om een beschikbaarheidsgroep te maken

Problemen met de configuratie van AlwaysOn-beschikbaarheidsgroepen oplossen

Verwante inhoud

Zie ook

Het eindpunt voor databasespiegeling (SQL Server)
overzicht van AlwaysOn-beschikbaarheidsgroepen (SQL Server)