Migrowanie grupy dostępności przy użyciu rozproszonej grupy dostępności

Użyj rozproszonej grupy dostępności do migrowania baz danych w zawsze włączonej grupie dostępności przy zachowaniu wysokiej dostępności i odzyskiwania po awarii (HADR) obsługi po migracji na SQL Server na platformie Azure Virtual Machines (maszyny wirtualne).

Po zweryfikowaniu źródłowych SQL Server wystąpień spełniających wymagania wstępne wykonaj kroki opisane w tym artykule, aby utworzyć rozproszoną dostępność między istniejącą grupą dostępności i docelową grupą dostępności na SQL Server na maszynach wirtualnych platformy Azure.

Ten artykuł jest przeznaczony dla baz danych uczestniczących w grupie dostępności i wymaga klastra trybu failover systemu Windows Server (WSFC) i odbiornika grupy dostępności. Istnieje również możliwość migrowania baz danych z autonomicznego wystąpienia SQL Server.

Diagram przedstawiający migrację grupy dostępności przy użyciu rozproszonej grupy dostępności

Początkowa konfiguracja

Pierwszym krokiem jest utworzenie maszyn wirtualnych SQL Server na platformie Azure. Można to zrobić przy użyciu Azure Portal, Azure PowerShell lub szablonu usługi ARM.

Pamiętaj, aby skonfigurować maszyny wirtualne SQL Server zgodnie z wymaganiami wstępnymi. Wybierz między wdrożeniem pojedynczej podsieci, które opiera się na przekierowywaniu ruchu do odbiornika grupy dostępności za pomocą usługi Azure Load Balancer lub nazwy sieci rozproszonej, a wdrożeniem wielu podsieci, w przypadku którego nie ma takiego wymagania. Zalecane jest wdrożenie wielu podsieci. Aby dowiedzieć się więcej, zobacz łączność.

Dla uproszczenia dołącz docelowe maszyny wirtualne SQL Server do tej samej domeny co wystąpienia źródłowe SQL Server. W przeciwnym razie dołącz docelową maszynę wirtualną SQL Server do domeny federacyjnej z domeną wystąpień SQL Server źródłowych.

Aby użyć automatycznego rozmieszczania w celu utworzenia rozproszonej grupy dostępności (DAG), nazwa wystąpienia globalnego podstawowego (źródła) grupy DAG musi być zgodna z nazwą wystąpienia usługi przesyłania dalej (element docelowy) grupy DAG. Jeśli istnieje niezgodność nazwy wystąpienia między globalnym modułem podstawowym i usługą przesyłania dalej, należy użyć ręcznego rozmieszczania w celu utworzenia grupy DAG i ręcznie dodać dodatkowe pliki bazy danych w przyszłości.

W tym artykule użyto następujących przykładowych parametrów:

  • Nazwa bazy danych: Adventureworks
  • Nazwy maszyn źródłowych: OnPremNode1 (globalny podstawowy w języku DAG), OnPremNode2
  • Nazwy wystąpień SQL Server źródłowych: MSSQLSERVER, MSSQLSERVER
  • Nazwa źródłowej grupy dostępności: OnPremAg
  • Nazwa odbiornika źródłowej grupy dostępności: OnPremAG_LST
  • Docelowe nazwy maszyn wirtualnych SQL Server: SQLVM1 (usługa przesyłania dalej w języku DAG), SQLVM2
  • Docelowe SQL Server w nazwach wystąpień maszyn wirtualnych platformy Azure: MSSQLSERVER, MSSQLSERVER
  • Docelowa nazwa grupy dostępności: AzureAG
  • Nazwa odbiornika grupy dostępności źródłowej: AzureAG_LST
  • Nazwa punktu końcowego: Hadr_endpoint
  • Nazwa rozproszonej grupy dostępności: DAG
  • Nazwa domeny: Contoso

Tworzenie punktów końcowych

Użyj języka Transact-SQL (T-SQL), aby utworzyć punkty końcowe w obu wystąpieniach źródłowych (OnPremNode1, OnPremNode2) i docelowych wystąpieniach SQL Server (SQLVM1, SQLVM2).

Jeśli masz już skonfigurowaną grupę dostępności w wystąpieniach źródłowych, uruchom ten skrypt tylko w dwóch wystąpieniach docelowych.

Aby utworzyć punkty końcowe, uruchom ten skrypt języka T-SQL na serwerach źródłowych i docelowych:

CREATE ENDPOINT [Hadr_endpoint]  
   STATE=STARTED 
   AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) 
FOR DATA_MIRRORING ( 
   ROLE = ALL,  
   AUTHENTICATION = WINDOWS NEGOTIATE, 
   ENCRYPTION = REQUIRED ALGORITHM AES 
) 
GO 

Konta domeny mają automatycznie dostęp do punktów końcowych, ale konta usług mogą nie być automatycznie częścią grupy administratorów systemu i mogą nie mieć uprawnień do łączenia. Aby ręcznie udzielić uprawnienia połączenia konta usługi SQL Server z punktem końcowym, uruchom następujący skrypt języka T-SQL na obu serwerach:

GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<your account>] 

Tworzenie źródłowej grupy dostępności

Ponieważ rozproszona grupa dostępności jest specjalną grupą dostępności obejmującą dwie pojedyncze grupy dostępności, należy najpierw utworzyć grupę dostępności w dwóch wystąpieniach SQL Server źródłowych.

Jeśli masz już grupę dostępności w wystąpieniach źródłowych, pomiń tę sekcję.

Użyj języka Transact-SQL (T-SQL), aby utworzyć grupę dostępności (OnPremAG) między dwoma wystąpieniami źródłowymi (OnPremNode1, OnPremNode2) dla przykładowej bazy danych Adventureworks .

Aby utworzyć grupę dostępności w wystąpieniach źródłowych, uruchom ten skrypt w źródłowej repliki podstawowej (OnPremNode1):

CREATE AVAILABILITY GROUP [OnPremAG]  
WITH ( AUTOMATED_BACKUP_PREFERENCE = PRIMARY, 
    DB_FAILOVER = OFF,  
    DTC_SUPPORT = NONE ) 
FOR DATABASE  [Adventureworks]  
REPLICA ON  
    N'OnPremNode1' WITH (ENDPOINT_URL = N'TCP://OnPremNode1.contoso.com:5022',  
    FAILOVER_MODE = AUTOMATIC, 
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
    SEEDING_MODE = AUTOMATIC,  
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)),   
    N'OnPremNode2' WITH (ENDPOINT_URL = N'TCP://OnPremNode2.contoso.com:5022',  
    FAILOVER_MODE = AUTOMATIC,  
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
    SEEDING_MODE = AUTOMATIC,  
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO));	 

Następnie, aby dołączyć replikę pomocniczą (OnPremNode2) do grupy dostępności (OnPremAg).

Aby dołączyć do grupy dostępności, uruchom ten skrypt w źródłowej repliki pomocniczej:

ALTER AVAILABILITY GROUP [OnPremAG] JOIN; 
GO 
ALTER AVAILABILITY GROUP [OnPremAG] GRANT CREATE ANY DATABASE; 
GO 

Na koniec utwórz odbiornik dla globalnej grupy dostępności usługi przesyłania dalej (OnPremAG).

Aby utworzyć odbiornik, uruchom ten skrypt w źródłowej repliki podstawowej:

USE [master] 
GO 
ALTER AVAILABILITY GROUP [OnPremAG] 
ADD LISTENER N'OnPremAG_LST' ( 
WITH IP ((<available static ip>, <mask>) 
, PORT=60173); 
GO

Tworzenie docelowej grupy dostępności

Należy również utworzyć grupę dostępności na docelowych maszynach wirtualnych SQL Server.

Jeśli masz już skonfigurowaną grupę dostępności między wystąpieniami SQL Server na platformie Azure, pomiń tę sekcję.

Użyj języka Transact-SQL (T-SQL), aby utworzyć grupę dostępności (AzureAG) na docelowych wystąpieniach SQL Server (SQLVM1 i SQLVM2).

Aby utworzyć grupę dostępności w obiekcie docelowym, uruchom ten skrypt w docelowej repliki podstawowej:

CREATE AVAILABILITY GROUP [AzureAG]
FOR
   REPLICA ON N'SQLVM1' WITH (ENDPOINT_URL = N'TCP://SQLVM1.contoso.com:5022',
   FAILOVER_MODE = MANUAL,
   AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, 
   BACKUP_PRIORITY = 50,
   SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
   SEEDING_MODE = AUTOMATIC),    
N'SQLVM2' WITH (ENDPOINT_URL = N'TCP://SQLVM2.contoso.com:5022',    
   FAILOVER_MODE = MANUAL,    
   AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,    
   BACKUP_PRIORITY = 50,    
   SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),    
   SEEDING_MODE = AUTOMATIC);   
GO 

Następnie dołącz docelową replikę pomocniczą (SQLVM2) do grupy dostępności (AzureAG).

Uruchom ten skrypt w docelowej repliki pomocniczej:

ALTER AVAILABILITY GROUP [AzureAG]   JOIN; 
GO 
ALTER AVAILABILITY GROUP [AzureAG]   GRANT CREATE ANY DATABASE; 
GO 

Na koniec utwórz odbiornik (AzureAG_LST) dla docelowej grupy dostępności (AzureAG). Jeśli maszyny wirtualne SQL Server zostały wdrożone w wielu podsieciach, utwórz odbiornik przy użyciu języka Transact-SQL. Jeśli maszyny wirtualne SQL Server zostały wdrożone w jednej podsieci, skonfiguruj Azure Load Balancer lub nazwę sieci rozproszonej dla odbiornika.

Aby utworzyć odbiornik, uruchom ten skrypt w podstawowej repliki grupy dostępności na platformie Azure.

ALTER AVAILABILITY GROUP [AzureAG]
ADD LISTENER N'AzureAG_LST' (
WITH IP
( (N'<primary replica's secondary ip >', N'<primary mask>'), (N'<secondary replica's secondary ip>', N'<secondary mask>') )
, PORT=<port number you set>);
GO

Tworzenie rozproszonej grupy dostępności

Po skonfigurowaniu źródłowych grup dostępności (OnPremAG) i docelowych (AzureAG) utwórz rozproszoną grupę dostępności, aby obejmowała obie poszczególne grupy dostępności.

Użyj języka Transact-SQL w źródle SQL Server globalnej podstawowej (OnPremNode1) i grupy dostępności (OnPremAG), aby utworzyć rozproszoną grupę dostępności (DAG).

Aby utworzyć rozproszoną grupę dostępności w źródle, uruchom ten skrypt na źródłowym serwerze podstawowym globalnym:

CREATE AVAILABILITY GROUP [DAG]  
 		  WITH (DISTRIBUTED)    
  		 AVAILABILITY GROUP ON  
  'OnPremAG' WITH   
  (		 
 LISTENER_URL = 'tcp://OnPremAG_LST.contoso.com:5022',   
 AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   
 FAILOVER_MODE = MANUAL,    
 SEEDING_MODE = AUTOMATIC    
  ),    
  'AzureAG' WITH   
  (    
 LISTENER_URL = 'tcp://AzureAG_LST.contoso.com:5022', 
 AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,  
 FAILOVER_MODE = MANUAL,    
 SEEDING_MODE = AUTOMATIC    
  );     
GO 

Uwaga

Tryb rozmieszczania jest ustawiony na AUTOMATIC wersję SQL Server docelową, a źródło jest takie samo. Jeśli obiektem docelowym SQL Server jest wyższa wersja, lub jeśli globalny podstawowy i usług przesyłania dalej mają różne nazwy wystąpień, utwórz rozproszoną grupę dostępności i dołącz pomocniczą grupę dostępności do rozproszonej grupy dostępności z SEEDING_MODE ustawioną na MANUALwartość . Następnie ręcznie przywróć bazy danych ze źródła do wystąpienia docelowego SQL Server. Zapoznaj się z uaktualnianiem wersji podczas migracji , aby dowiedzieć się więcej.

Po utworzeniu rozproszonej grupy dostępności dołącz docelową grupę dostępności (AzureAG) do wystąpienia docelowego usługi przesyłania dalej (SQLVM1) do rozproszonej grupy dostępności (DAG).

Aby dołączyć docelową grupę dostępności do rozproszonej grupy dostępności, uruchom ten skrypt w docelowym usłudze przesyłania dalej:

ALTER AVAILABILITY GROUP [DAG]  
   JOIN    
   		AVAILABILITY GROUP ON   
  'OnPremAG' WITH     
 	 (    
 LISTENER_URL = 'tcp://OnPremAG_LST.contoso.com:5022',  
 AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, 
 FAILOVER_MODE = MANUAL, 
 SEEDING_MODE = AUTOMATIC  
  ),    
  'AzureAG' WITH    
 	 (    
 LISTENER_URL = 'tcp://AzureAG_LST.contoso.com:5022',    
 AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,    
 FAILOVER_MODE = MANUAL,    
 SEEDING_MODE = AUTOMATIC    
  );     
GO    

Jeśli musisz anulować, wstrzymać lub opóźnić synchronizację między źródłowymi i docelowymi grupami dostępności (na przykład problemy z wydajnością), uruchom ten skrypt w źródłowym globalnym wystąpieniu podstawowym (OnPremNode1):

ALTER AVAILABILITY GROUP [DAG] 
   MODIFY  
   AVAILABILITY GROUP ON   
   'AzureAG' WITH 
   (  SEEDING_MODE = MANUAL  );  

Aby dowiedzieć się więcej, przejrzyj anulowanie automatycznego rozmieszczania do usługi przesyłania dalej.

Następne kroki

Po utworzeniu rozproszonej grupy dostępności możesz przystąpić do ukończenia migracji.