Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Bereitstellen von Microsoft SQL Server Distributed Always On Availability Groups für DR auf OCI
Einführung
Verteilte Verfügbarkeitsgruppe "Immer verfügbar" (Verteilte Verfügbarkeitsgruppe) ist ein leistungsstarkes Feature in Microsoft SQL Server, das die Funktionen der traditionellen Verfügbarkeitsgruppe für SQL Server erweitert.
Mit verteilten Verfügbarkeitsgruppen können Sie eine Disaster Recovery-(DR-)Lösung erstellen, die mehrere Windows Server Failover Cluster (WSFCs) umfasst, die in verschiedenen Oracle Cloud Infrastructure-(OCI-)Regionen ausgeführt werden.
Auf diese Weise können Sie eine höhere Verfügbarkeit, Disaster Recovery-Funktionen und eine geografische Verteilung für Ihre kritischen SQL Server-Datenbanken erreichen, die auf OCI ausgeführt werden.
Ausschlüsse für dieses Tutorial
In diesem Tutorial werden wir nicht Schritt für Schritt die Erstellung der einzelnen Microsoft SQL Server Always On-Verfügbarkeitsgruppen behandeln. Weitere Informationen finden Sie unter Microsoft SQL Server Always On-Verfügbarkeitsgruppen für HA und DR auf OCI bereitstellen.
Bitte lesen Sie die folgende offizielle Microsoft-Dokumentation:
Ziele
- Erstellen Sie die verteilte Always On-Verfügbarkeitsgruppenlösung von Microsoft SQL Server auf OCI.
Voraussetzungen
-
Die Bausteine einer verteilten Verfügbarkeitsgruppe sind:
-
VCNs: Erstellen Sie virtuelle OCI-Cloud-Netzwerke (VCNs) in zwei separaten OCI-Regionen, und stellen Sie eine Verbindung über das Remote-Peering mit dynamischen Routinggateways (DRGs) her.
-
AOAG 1: Dieser Vorgang wird in OCI Region 1 ausgeführt. Hier wird die zu replizierende Datenbank normal ausgeführt. Dies basiert auf einer WSFC, die auf SQL Server #1 und SQL Server #2 im folgenden Beispiel (OCI-Region Paris) ausgeführt wird.
-
AOAG 2: Dieser Vorgang wird in OCI Region 2 ausgeführt. Dies ist eine vollständig unabhängige Always On-Verfügbarkeitsgruppe, die auf einer WSFC ausgeführt wird, die von SQL Server #3 und SQL Server #4 im folgenden Beispiel (OCI-Region Marseille) besteht.
-
Verteilte AOAG: Dies ist ein logisches Konstrukt, das in der zu replizierenden SQL-Datenbank erstellt wird.
Die folgende Abbildung zeigt die logische Darstellung einer verteilten Verfügbarkeitsgruppe.
-
-
Erstellen Sie zwei unabhängige Always On-Verfügbarkeitsgruppen (eine in der ersten Region und die andere in der zweiten Region). Weitere Informationen finden Sie unter Microsoft SQL Server Always On-Verfügbarkeitsgruppen für HA und DR auf OCI bereitstellen.
Jetzt haben wir zwei unabhängige Always On-Verfügbarkeitsgruppen, die in zwei verschiedenen OCI-Regionen ausgeführt werden. In diesem Beispiel sind die OCI-Regionen Paris und Marseille.
-
Wir haben das erste WSFC-Cluster (
paris-wsfc
) in der ersten Region mit der ersten SQL Always On-Verfügbarkeitsgruppe (paris-aoag
) und dem SQL-Listener (paris-sql-list
) für die SQL Always On-Verfügbarkeitsgruppe.Die beiden Windows-Knoten sind
sql-srv1
undsql-srv2
. -
In der zweiten Region gibt es ein zweites WSFC-Cluster (
marseille-wsfc
) mit der zweiten SQL Always On-Verfügbarkeitsgruppe (marseille-aoag
) und den SQL-Listener (mars-sql-list
) für die zweite SQL Always On-Verfügbarkeitsgruppe.Die beiden Windows-Knoten sind
sql-srv3
undsql-srv4
. -
Aus SQL Server-Perspektive wird ab
sql-srv1
(paris-aoag
) in diesem Beispiel die DemoDB angezeigt, die mit der ersten Always On-Verfügbarkeitsgruppe und der neu erstelltendistributed-aoag
repliziert wird. -
Bei der Verbindung mit
sql-srv3
(marseille-aoag
) wird in diesem Beispiel auch die DemoDB angezeigt, bei der es sich um die Datenbank handelt, die mit der ersten Verfügbarkeitsgruppe "Immer bei" repliziert wird, die neu erstelltedistributed-aoag
und diemarseille-aoag
, die zweite Verfügbarkeitsgruppe "Immer bei", die auf der zweiten Site (Marseille) erstellt wird.
-
Aufgabe 1: Verteilte Verfügbarkeitsgruppe erstellen
Erstellen Sie eine verteilte Verfügbarkeitsgruppe (distributed-aoag
), die aus den beiden zugrunde liegenden, bereits ausgeführten Always On-Verfügbarkeitsgruppen besteht.
Wie bereits erwähnt, gehen wir davon aus, dass zwei unabhängige Always On-Verfügbarkeitsgruppen bereits in zwei verschiedenen OCI-Regionen aktiv sind und ausgeführt werden.
Für die zweite Always On-Verfügbarkeitsgruppe (marseille-aoag
), die Standbygruppe, müssen keine Datenbanken verknüpft sein. Daher muss praktisch die zweite Always On-Verfügbarkeitsgruppe leer sein, bevor die verteilte Verfügbarkeitsgruppe erstellt wird, also ohne dass eine Verfügbarkeitsdatenbank verknüpft ist. Sie können die zweite Always On-Verfügbarkeitsgruppe wie gewohnt mit einer verknüpften anfänglichen Datenbank erstellen. Anschließend können Sie diese Datenbank entfernen, die nur zum Erstellen der zweiten Always On-Verfügbarkeitsgruppe verwendet wurde. Dies liegt daran, dass die grafische Benutzeroberfläche keine Always On-Verfügbarkeitsgruppe mit einer verknüpften Datenbank erstellen kann.
-
Erstellen Sie eine verteilte Verfügbarkeitsgruppe für die erste Verfügbarkeitsgruppe "Immer aktiviert".
Stellen Sie eine Verbindung zu SQL Server auf dem ersten Server her (in diesem Beispiel Knoten
sql-srv1
von Paris), und führen Sie die folgenden SQL-Befehle aus.Hinweis:
-
Die Listener-Namen sind
paris-sql-list
undmars-sql-list
. -
Der zu verwendende TCP-Port,
5022
ist der Port des Endpunkts und muss verwendet werden. Dies unterscheidet sich normalerweise vom Listener-Port (1433
). -
Verfügbarkeitsgruppennamen müssen genau die Namen sein, die von der bereits ausgeführten Always On-Verfügbarkeitsgruppe verwendet werden.
USE MASTER; CREATE AVAILABILITY GROUP [distributed-aoag] WITH (DISTRIBUTED) AVAILABILITY GROUP ON 'paris-aoag' WITH ( LISTENER_URL = 'tcp://paris-sql-list.acme.corp:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC ), 'marseille-aoag' WITH ( LISTENER_URL = 'tcp://mars-sql-list.acme.corp:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC ); GO
-
-
Treten Sie der verteilten Verfügbarkeitsgruppe in der zweiten Verfügbarkeitsgruppe "Immer aktiviert" bei.
Stellen Sie eine Verbindung zu SQL Server auf dem ersten Server der zweiten Always On-Verfügbarkeitsgruppe (Server Marseille-Site
sql-srv3
) her, und führen Sie die folgenden SQL-Befehle aus.USE MASTER; ALTER AVAILABILITY GROUP [distributed-aoag] JOIN AVAILABILITY GROUP ON 'paris-aoag' WITH ( LISTENER_URL = 'tcp://paris-sql-list.acme.corp:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC ), 'marseille-aoag' WITH ( LISTENER_URL = 'tcp://mars-sql-list.acme.corp:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC ); GO
-
Im Gegensatz zu herkömmlichen Verfügbarkeitsgruppen sind für verteilte Verfügbarkeitsgruppen keine Ressourcengruppen oder Rollen in WSFC erforderlich. Alle Metadaten werden in SQL Server verwaltet. Dies bedeutet, dass selbst SQL Server Management Studio die Namen von Datenbanken in der verteilten Verfügbarkeitsgruppe nicht direkt anzeigt.
Um diese Informationen anzuzeigen, führen Sie das folgende Transact-SQL-Skript aus.
--View metadata and status of the Distributed Availability Group SELECT r.replica_server_name, r.endpoint_url, rs.connected_state_desc, rs.role_desc, rs.operational_state_desc, rs.recovery_health_desc,rs.synchronization_health_desc, r.availability_mode_desc, r.failover_mode_desc FROM sys.dm_hadr_availability_replica_states rs INNER JOIN sys.availability_replicas r ON rs.replica_id=r.replica_id ORDER BY r.replica_server_name
Hinweis: Um potenzielle Netzwerklatenzzeiten zwischen Regionen zu berücksichtigen, haben wir die primäre und die sekundäre Always On-Verfügbarkeitsgruppe mit asynchroner Commit-Replikation konfiguriert. Dadurch wird der Performance-Overhead in der Primärdatenbank minimiert. Innerhalb jeder Always On-Verfügbarkeitsgruppe haben wir uns für die synchrone Commit-Replikation zwischen Replikaten entschieden, um High Availability sicherzustellen. Bei einem Failover zwischen asynchronen Commit-Replikaten (bei verteilter Verfügbarkeitsgruppe) erfordert die Reduzierung des Datenverlusts jedoch einen temporären Wechsel in den Modus für synchrones Commit, bevor das Failover initiiert wird. Für failover_mode ist der einzige verfügbare Modus für die verteilte Verfügbarkeitsgruppe manuell.
Aufgabe 2: Failover-Prozedur für verteilte Verfügbarkeitsgruppe
In dieser Aufgabe wird über das Failover zwischen den beiden Always On-Verfügbarkeitsgruppen gesprochen. Die Failover-Prozedur der Datenbank besteht aus den folgenden einfachen Schritten und Prüfungen.
-
Erste Prüfungen.
-
Ändern Sie den Verfügbarkeitsmodus für die primäre Verfügbarkeitsgruppe "Immer aktiviert" und die sekundäre Verfügbarkeitsgruppe "Immer aktiviert" von "Asynchron" in "Synchron".
-
Führen Sie Skripte aus, um zu prüfen, ob die Synchronisierung in Ordnung ist.
-
Ändern Sie die Rolle der primären Verfügbarkeitsgruppe "Immer aktiviert" von "Primär" in "Sekundär".
-
Failover zur sekundären Always On-Verfügbarkeitsgruppe.
-
Ändern Sie den Verfügbarkeitsmodus für die primäre Verfügbarkeitsgruppe "Immer aktiviert" und die sekundäre Verfügbarkeitsgruppe "Immer aktiviert" von "Synchron" in "Asynchron".
Führen Sie die Schritte aus:
-
Führen Sie die folgenden Skripte aus, um zu prüfen, ob die Synchronisierung in Ordnung ist, zuerst auf der aktuell primären SQL der aktuellen primären Site und dann auf der primären SQL der sekundären Site.
Die ausgeführten Ergebnisse müssen
CONNECTED_STATE
=CONNECTED
undSYNCHRONIZATION_HEALTH
=HEALTHY
sein.select ag.name, ag.is_distributed, ar.replica_server_name, ar.availability_mode_desc, ars.connected_state_desc, ars.role_desc, ars.operational_state_desc, ars.synchronization_health_desc from sys.availability_groups ag join sys.availability_replicas ar on ag.group_id=ar.group_id left join sys.dm_hadr_availability_replica_states ars on ars.replica_id=ar.replica_id where ag.is_distributed=1 GO
-
Ändern Sie den Verfügbarkeitsmodus. Führen Sie das folgende Skript zuerst auf dem aktuell primären SQL Server der aktuell primären Site und dann auf dem primären SQL Server der sekundären Site aus.
--Run this first on the primary replica of the primary AOAG and then again on the secondary AOAG USE MASTER; ALTER AVAILABILITY GROUP [distributed-aoag] MODIFY AVAILABILITY GROUP ON 'paris-aoag' WITH ( AVAILABILITY_MODE = SYNCHRONOUS_COMMIT ), 'marseille-aoag' WITH ( AVAILABILITY_MODE = SYNCHRONOUS_COMMIT );
-
Um sicherzustellen, dass keine Daten verloren gehen, prüfen Sie die Ergebnisse dieses Schritts. Der Status muss
SYNCHRONIZED
lauten, undlast_hardened_lsn
muss für jede Datenbank sowohl auf der globalen Primärdatenbank als auch auf dem Forwarder übereinstimmen.-- Run this query on the Global Primary and the forwarder -- Check the results to see if synchronization_state_desc is SYNCHRONIZED, and the last_hardened_lsn is the same per database on both the global primary and forwarder -- If not rerun the query on both side every 5 seconds until it is the case -- SELECT ag.name , drs.database_id , db_name(drs.database_id) as database_name , drs.group_id , drs.replica_id , drs.synchronization_state_desc , drs.last_hardened_lsn FROM sys.dm_hadr_database_replica_states drs INNER JOIN sys.availability_groups ag on drs.group_id = ag.group_id;
-
Jetzt können Sie
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
auf dem aktuellen primären SQL Server auf der aktuellen primären Site festlegen.--Run this script into Primary AOAG USE MASTER; ALTER AVAILABILITY GROUP [distributed-aoag] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);
Jetzt können Sie die Rolle der primären Verfügbarkeitsgruppe "Immer verfügbar" von "Primär" in "Sekundär" ändern.
--Run this script into Primary AOAG, this will terminate client applications connected to the primary replica of the primary AOAG USE MASTER; ALTER AVAILABILITY GROUP [distributed-aoag] SET (ROLE = SECONDARY);
-
Ändern Sie die Rolle der sekundären Verfügbarkeitsgruppe "Immer aktiviert" von "Sekundär" in "Primär". Das folgende Skript führt diese Rollenänderung durch und aktiviert die Datenbank für Lese- oder Schreibvorgänge. Außerdem werden die Rollen der Verfügbarkeitsgruppen "Immer aktiviert" innerhalb der verteilten Verfügbarkeitsgruppe entsprechend aktualisiert.
--Run this script into Secondary AOAG, this will terminate client applications connected to the primary replica of the primary AOAG ALTER AVAILABILITY GROUP [distributed-aoag] FORCE_FAILOVER_ALLOW_DATA_LOSS;
Führen Sie das folgende Skript aus, um den Status zu prüfen.
--check the status on the new primary (formerly standby site) select ag.name, ag.is_distributed, ar.replica_server_name, ar.availability_mode_desc, ars.connected_state_desc, ars.role_desc, ars.operational_state_desc, ars.synchronization_health_desc from sys.availability_groups ag join sys.availability_replicas ar on ag.group_id=ar.group_id left join sys.dm_hadr_availability_replica_states ars on ars.replica_id=ar.replica_id where ag.is_distributed=1 GO
-
Heben Sie nun auf dem neuen primären SQL Server die Einstellung
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
auf.--Run this script into Primary AOAG ALTER AVAILABILITY GROUP [distributed-aoag] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0);
Ändern Sie den Verfügbarkeitsmodus wieder in den Standardmodus, indem Sie das folgende Skript sowohl auf der primären als auch auf der sekundären Site ausführen.
--Run this first on the primary replica of the primary AOAG and then again on the secondary AOAG ALTER AVAILABILITY GROUP [distributed-aoag] MODIFY AVAILABILITY GROUP ON 'paris-aoag' WITH ( AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT ), 'marseille-aoag' WITH ( AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT );
Aufgabe 3: Failback-Prozedur für verteilte Always On-Verfügbarkeitsgruppe
Um Paris als primären Standort und Marseille als sekundären Standort wiederherzustellen, führen Sie einfach einen neuen Switchover aus, um die Synchronisierung umzukehren, wie in Aufgabe 2 beschrieben.
Verwandte Links
Danksagungen
- Autoren – Alessandro Volpi (Cloud Solution Specialist)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Deploy Microsoft SQL Server Distributed Always On Availability Groups for DR on OCI
G23259-01
December 2024