Erstellen einer Always On-Verfügbarkeitsgruppe mit PowerShell

Gilt für:SQL Server

In diesem Thema wird beschrieben, wie PowerShell-Cmdlets zum Erstellen und Konfigurieren einer Always On-Verfügbarkeitsgruppe mithilfe von PowerShell in SQL Serververwendet werden. Eine Verfügbarkeitsgruppe definiert einen Satz von Benutzerdatenbanken, für die als eine einzelne Einheit ein Failover ausgeführt wird, sowie einen Satz von Failoverpartnern, die als Verfügbarkeitsreplikatebezeichnet werden und das Failover unterstützen.

Hinweis

Eine Einführung in Verfügbarkeitsgruppen finden Sie unter Übersicht über Always On-Verfügbarkeitsgruppen (SQL Server).

Hinweis

Als Alternative zur Verwendung von PowerShell-Cmdlets können Sie den Assistenten zum Erstellen einer Verfügbarkeitsgruppe oder Transact-SQLverwenden. Weitere Informationen finden Sie unter Verwenden des Dialogfelds „Neue Verfügbarkeitsgruppe“ (SQL Server Management Studio) oder Erstellen einer Verfügbarkeitsgruppe (Transact-SQL)verwendet werden.

Vorbereitungen

Voraussetzungen, Einschränkungen und Empfehlungen

  • Überprüfen Sie vor dem Erstellen einer Verfügbarkeitsgruppe, ob sich die Hostinstanzen von SQL Server jeweils auf verschiedenen WSFC-Knoten (Windows Server-Failoverclustering) eines einzelnen WSFC-Failoverclusters befinden. Stellen Sie auch sicher, dass die Serverinstanzen die anderen Serverinstanzvoraussetzungen erfüllen, dass alle anderen Always On-Verfügbarkeitsgruppen-Anforderungen erfüllt sind und dass Sie die Empfehlungen berücksichtigen. Um weitere Informationen zu erhalten, empfehlen wir Ihnen dringend die Lektüre von Voraussetzungen, Einschränkungen und Empfehlungen für Always On-Verfügbarkeitsgruppen (SQL Server).

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin und die CREATE AVAILABILITY GROUP-Serverberechtigung, ALTER ANY AVAILABILITY GROUP-Berechtigung oder CONTROL SERVER-Berechtigung.

Verwenden von PowerShell zum Erstellen und Konfigurieren einer Verfügbarkeitsgruppe

In der folgenden Tabelle sind die grundlegenden Tasks für die Konfiguration einer Verfügbarkeitsgruppe aufgeführt, und es sind die Tasks angegeben, die von PowerShell-Cmdlets unterstützt werden. Die Always On-Verfügbarkeitsgruppen -Tasks müssen in der Reihenfolge ausgeführt werden, in der sie in der Tabelle dargestellt sind.

Aufgabe PowerShell-Cmdlets (falls verfügbar) oder Transact-SQL-Anweisung Wo die Aufgabe auszuführen ist
Erstellen eines Datenbankspiegelungs-Endpunkts (einmal pro SQL Server -Instanz) New-SqlHadrEndPoint Führen Sie diesen Task auf jeder Serverinstanz aus, auf der der Datenbankspiegelungs-Endpunkt fehlt.

Verwenden Sie Set-SqlHadrEndpoint, um einen vorhandenen Datenbankspiegelungs-Endpunkt zu ändern.
Erstellen der Verfügbarkeitsgruppe Verwenden Sie zuerst das Cmdlet New-SqlAvailabilityReplica mit dem -AsTemplate -Parameter, um ein In-Memory-Verfügbarkeitsreplikatobjekt für jedes der beiden Verfügbarkeitsreplikate zu erstellen, die Sie in die Verfügbarkeitsgruppe einschließen möchten.

Erstellen Sie dann die Verfügbarkeitsgruppe, indem Sie das Cmdlet New-SqlAvailabilityGroup ausführen und auf Ihre Verfügbarkeitsreplikatobjekte verweisen.
Führen Sie diesen Task auf der Serverinstanz aus, auf der das anfängliche primäre Replikat gehostet werden soll.
Verknüpfen eines sekundären Replikats mit einer Verfügbarkeitsgruppe Join-SqlAvailabilityGroup Führen Sie diesen Task auf jeder Serverinstanz aus, auf der ein sekundäres Replikat gehostet wird.
Vorbereiten der sekundären Datenbank Backup-SqlDatabase und Restore-SqlDatabase Erstellen Sie Sicherungen auf der Serverinstanz, auf der das primäre Replikat gehostet wird.

Stellen Sie mit dem Wiederherstellungsparameter NoRecovery Sicherungen auf jeder Serverinstanz wieder her, auf der ein sekundäres Replikat gehostet wird. Wenn sich die Dateipfade zwischen den Computern unterscheiden, die das primäre Replikat und das sekundäre Zielreplikat hosten, verwenden Sie ebenfalls den Wiederherstellungsparameter RelocateFile .
Starten der Datensynchronisierung durch Hinzufügen der einzelnen sekundären Datenbanken zur Verfügbarkeitsgruppe Add-SqlAvailabilityDatabase Führen Sie diesen Task auf jeder Serverinstanz aus, auf der ein sekundäres Replikat gehostet wird.

Hinweis

Ändern Sie das Verzeichnis (cd) in die angegebene Serverinstanz bzw. die angegebenen Serverinstanzen, um die angegebenen Aufgaben auszuführen.

PowerShell

Richten Sie den SQL Server PowerShell-Anbieter ein, und verwenden Sie ihn.

Hinweis

Um die Syntax und ein Beispiel für ein bestimmtes Cmdlet anzuzeigen, verwenden Sie das Get-Help -Cmdlet in der SQL Server PowerShell-Umgebung. Weitere Informationen finden Sie unter Get Help SQL Server PowerShell.

  1. Wechseln Sie mitcdin das Verzeichnis der Serverinstanz, die das primäre Replikat hosten soll.

  2. Erstellen Sie für das primäre Replikat ein Verfügbarkeitsreplikatobjekt im Arbeitsspeicher.

  3. Erstellen Sie für jedes der sekundären Replikate ein Verfügbarkeitsreplikatobjekt im Arbeitsspeicher.

  4. Erstellen Sie die Verfügbarkeitsgruppe.

    Hinweis

    Die maximale Länge eines Verfügbarkeitsgruppennamens beträgt 128 Zeichen.

  5. Verknüpfen Sie das neue sekundäre Replikat mit der Verfügbarkeitsgruppe. Weitere Informationen finden Sie unter Verknüpfen eines sekundären Replikats mit einer Verfügbarkeitsgruppe (SQL Server).

  6. Erstellen Sie für jede Datenbank in der Verfügbarkeitsgruppe eine sekundäre Datenbank, indem Sie letzte Sicherungen der primären Datenbank mit RESTORE WITH NORECOVERY wiederherstellen.

  7. Verknüpfen Sie jede neue sekundäre Datenbank mit der Verfügbarkeitsgruppe. Weitere Informationen finden Sie unter Verknüpfen eines sekundären Replikats mit einer Verfügbarkeitsgruppe (SQL Server).

  8. (Optional) Verwenden Sie den Windows-Befehl dir, um den Inhalt der neuen Verfügbarkeitsgruppe zu überprüfen.

Hinweis

Wenn die SQL Server -Dienstkonten der Serverinstanzen unter unterschiedlichen Domänenbenutzerkonten ausgeführt werden, erstellen Sie auf jeder Serverinstanz eine Anmeldung für die andere Serverinstanz, und gewähren Sie dieser Anmeldung eine CONNECT-Berechtigung zum Zugreifen auf den lokalen Datenbankspiegelungs-Endpunkt.

Beispiel

Im folgenden PowerShell-Beispiel wird eine einfache Verfügbarkeitsgruppe mit dem Namen <myAvailabilityGroup> erstellt und konfiguriert, die über zwei Verfügbarkeitsreplikate und eine Verfügbarkeitsdatenbank verfügt. Beispiel:

  1. Sichert <myDatabase> und das dazugehörige Transaktionsprotokoll.

  2. Stellt <myDatabase> und das dazugehörige Transaktionsprotokoll mithilfe der -NoRecovery -Option wieder her.

  3. Erstellt eine speicherinterne Darstellung des primären Replikats, die von der lokalen Instanz von SQL Server (mit dem Namen PrimaryComputer\Instance) gehostet wird.

  4. Erstellt eine speicherinterne Darstellung des sekundären Replikats, die von einer Instanz von SQL Server (mit dem Namen SecondaryComputer\Instance) gehostet wird.

  5. Erstellt eine Verfügbarkeitsgruppe mit dem Namen <myAvailabilityGroup>.

  6. Verknüpft das sekundäre Replikat mit der Verfügbarkeitsgruppe.

  7. Verknüpft die sekundäre Datenbank mit der Verfügbarkeitsgruppe.

# 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

So konfigurieren Sie eine Serverinstanz für Always On-Verfügbarkeitsgruppen

So konfigurieren Sie Verfügbarkeitsgruppen- und Replikateigenschaften

So schließen Sie die Konfiguration von Verfügbarkeitsgruppen ab

Alternative Möglichkeiten zum Erstellen einer Verfügbarkeitsgruppe

Problembehandlung für die Always On-Verfügbarkeitsgruppenkonfiguration

Verwandte Inhalte

Weitere Informationen

Der Datenbankspiegelungs-Endpunkt (SQL Server)
Übersicht über Always On-Verfügbarkeitsgruppen (SQL Server)