Używanie rozproszonej grupy dostępności do migrowania baz danych z wystąpienia autonomicznego

Użyj rozproszonej grupy dostępności do migrowania bazy danych (lub wielu baz danych) z autonomicznego wystąpienia SQL Server do SQL Server na platformie Azure Virtual Machines (maszyny wirtualne).

Po zweryfikowaniu źródłowego wystąpienia SQL Server spełnia wymagania wstępne, wykonaj kroki opisane w tym artykule, aby utworzyć grupę dostępności w autonomicznym wystąpieniu SQL Server i przeprowadzić migrację bazy danych (lub grupy baz danych) do maszyny wirtualnej SQL Server na platformie Azure.

Ten artykuł jest przeznaczony dla baz danych w autonomicznym wystąpieniu SQL Server. To rozwiązanie nie wymaga klastra trybu failover systemu Windows Server (WSFC) ani odbiornika grupy dostępności. Istnieje również możliwość migrowania baz danych w grupie dostępności.

Diagram wyjaśniający migrację pojedynczego wystąpienia przy użyciu rozproszonej grupy dostępności

Konfiguracja początkowa

Pierwszym krokiem jest utworzenie maszyny wirtualnej 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ć maszynę wirtualną SQL Server zgodnie z wymaganiami wstępnymi.

Dla uproszczenia dołącz docelową maszynę wirtualną SQL Server do tej samej domeny co SQL Server źródłowa. W przeciwnym razie dołącz docelową maszynę wirtualną SQL Server do domeny federacyjnej z domeną SQL Server źródłowej.

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, aby utworzyć grupę DAG, a następnie 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
  • Nazwa maszyny źródłowej (globalna podstawowa w języku DAG): OnPremNode
  • Nazwa wystąpienia SQL Server źródłowego: MSSQLSERVER
  • Nazwa źródłowej grupy dostępności: OnPremAg
  • Docelowa nazwa maszyny wirtualnej SQL Server (usługa przesyłania dalej w języku DAG): SQLVM
  • Docelowe SQL Server w nazwie wystąpienia maszyny wirtualnej platformy Azure: MSSQLSERVER
  • Docelowa nazwa grupy dostępności: AzureAG
  • 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 wystąpieniach SQL Server źródłowych (OnPremNode) i docelowych (SQLVM).

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 automatycznie mają 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 przyznać konto usługi SQL Server uprawnienia połączenia 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 wystąpieniu źródłowym SQL Server. Jeśli masz już grupę dostępności, którą chcesz zachować na platformie Azure, zamiast tego przeprowadź migrację grupy dostępności .

Użyj języka Transact-SQL (T-SQL), aby utworzyć grupę dostępności (OnPremAg) w wystąpieniu źródłowym (OnPremNode) dla przykładowej bazy danych Adventureworks .

Aby utworzyć grupę dostępności, uruchom ten skrypt w źródle:

CREATE AVAILABILITY GROUP [OnPremAG] 
   WITH (AUTOMATED_BACKUP_PREFERENCE = PRIMARY, 
   DB_FAILOVER = OFF, 
   DTC_SUPPORT = NONE, 
   CLUSTER_TYPE=NONE )
   FOR DATABASE [Adventureworks] 

REPLICA ON N'OnPremNode' 
WITH (ENDPOINT_URL = N'TCP://OnPremNode.contoso.com:5022', FAILOVER_MODE = MANUAL, 
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, 
SEEDING_MODE = AUTOMATIC, SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)); 

GO 

Tworzenie docelowej grupy dostępności

Należy również utworzyć grupę dostępności na docelowej maszynie wirtualnej SQL Server.

Użyj języka Transact-SQL (T-SQL), aby utworzyć grupę dostępności (AzureAG) w wystąpieniu docelowym (SQLVM).

Aby utworzyć grupę dostępności, uruchom ten skrypt w lokalizacji docelowej:

CREATE AVAILABILITY GROUP [AzureAG]
   WITH (AUTOMATED_BACKUP_PREFERENCE = PRIMARY, 
   DB_FAILOVER = OFF, 
   DTC_SUPPORT = NONE, 
   CLUSTER_TYPE=NONE, 
   REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0) 
FOR REPLICA ON N'SQLVM' 
WITH (ENDPOINT_URL = N'TCP://SQLVM.contoso.com:5022', FAILOVER_MODE = MANUAL,    
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,    
SEEDING_MODE = AUTOMATIC,SECONDARY_ROLE(ALLOW_CONNECTIONS = NO));    
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 zarówno poszczególne grupy dostępności.

Użyj języka Transact-SQL w źródłowym wystąpieniu SQL Server (OnPremNode) i grupie dostępności (OnPremAG), aby utworzyć rozproszoną grupę dostępności (DAG).

Aby utworzyć rozproszoną grupę dostępności, uruchom ten skrypt w źródle:

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

Uwaga

Tryb rozmieszczania jest ustawiony jako AUTOMATIC wersja SQL Server w obiekcie docelowym, a źródło jest takie samo. Jeśli SQL Server elementem docelowym jest wyższa wersja lub jeśli globalny podstawowy i 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 MANUAL. Następnie ręcznie przywróć bazy danych ze źródła do docelowego wystąpienia SQL Server. Przejrzyj uaktualnienia wersji podczas migracji , aby dowiedzieć się więcej.

Po utworzeniu rozproszonej grupy dostępności dołącz docelową grupę dostępności (AzureAG) w wystąpieniu docelowym (SQLVM) 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 lokalizacji docelowej:

ALTER AVAILABILITY GROUP [DAG]    
JOIN    
AVAILABILITY GROUP ON   
   'OnPremAG' WITH    
 	(LISTENER_URL = 'tcp://OnPremNode.contoso.com:5022', 
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,  
    FAILOVER_MODE = MANUAL,  
    SEEDING_MODE = AUTOMATIC  
 	),   
   'AzureAG' WITH 
 	(LISTENER_URL = 'tcp://SQLVM.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 (OnPremNode):

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

Aby dowiedzieć się więcej, zapoznaj się z tematem 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.