Kullanılabilirlik grubunu geçirmek için dağıtılmış AG kullanma

Bir AlwaysOn kullanılabilirlik grubundaki veritabanlarını geçirmek için dağıtılmış bir kullanılabilirlik grubu (AG) kullanın ve azure Sanal Makineler (VM) üzerindeki SQL Server yüksek kullanılabilirlik ve olağanüstü durum kurtarma (HADR) desteği sağlar.

Kaynak SQL Server örneklerinizin önkoşulları karşılayıp doğruladıktan sonra, mevcut kullanılabilirlik grubunuzla Azure VM'lerinizdeki SQL Server hedef kullanılabilirlik grubunuz arasında dağıtılmış kullanılabilirlik oluşturmak için bu makaledeki adımları izleyin.

Bu makale bir kullanılabilirlik grubuna katılan veritabanlarına yöneliktir ve Windows Sunucu Yük Devretme Kümesi (WSFC) ve kullanılabilirlik grubu dinleyicisi gerektirir. Veritabanlarını tek başına bir SQL Server örneğinden geçirmek de mümkündür.

Diagram explaining availability group migration using a distributed availability group

İlk kurulum

İlk adım, Azure'da SQL Server VM'lerinizi oluşturmaktır. Bunu yapmak için Azure portal, Azure PowerShell veya ARM şablonunu kullanabilirsiniz.

SQL Server VM'lerinizi önkoşullara göre yapılandırıldığından emin olun. Trafiği kullanılabilirlik grubu dinleyicinize yönlendirmek için Azure Load Balancer veya dağıtılmış ağ adı kullanan tek alt ağ dağıtımıyla bu tür bir gereksinime sahip olmayan çoklu alt ağ dağıtımı arasında bir tercih yapın. Çoklu alt ağ dağıtımı her durumda önerilen seçenektir. Daha fazla bilgi edinmek için bkz. bağlantı.

Kolaylık olması için hedef SQL Server VM'lerinizi kaynak SQL Server örneklerinizle aynı etki alanına ekleyin. Aksi takdirde hedef SQL Server VM'nizi kaynak SQL Server örneklerinizin etki alanıyla birleştirilmiş bir etki alanına ekleyin.

Otomatik dağıtım kullanarak dağıtılmış kullanılabilirlik grubunuzu (DAG) oluşturmak için DAG'nin genel birincil (kaynak) örnek adı, DAG'nin ileticisinin (hedef) örnek adıyla eşleşmelidir. Genel birincil ve iletici arasında örnek adı uyuşmazlığı varsa, DAG'yi oluşturmak için el ile dengeli dağıtımı kullanmanız ve gelecekte ek veritabanı dosyalarını el ile eklemeniz gerekir.

Bu makalede aşağıdaki örnek parametreler kullanılır:

  • Veritabanı adı: Adventureworks
  • Kaynak makine adları: OnPremNode1 (DAG'de genel birincil), OnPremNode2
  • Kaynak SQL Server örnek adları: MSSQLSERVER, MSSQLSERVER
  • Kaynak kullanılabilirlik grubu adı: OnPremAg
  • Kaynak kullanılabilirlik grubu dinleyici adı: OnPremAG_LST
  • Hedef SQL Server VM adları: SQLVM1 (DAG'de iletici), SQLVM2
  • Azure VM örnek adlarında hedef SQL Server: MSSQLSERVER, MSSQLSERVER
  • Hedef kullanılabilirlik grubu adı: AzureAG
  • Kaynak kullanılabilirlik grubu dinleyici adı: AzureAG_LST
  • Uç nokta adı: Hadr_endpoint
  • Dağıtılmış kullanılabilirlik grubu adı: DAG
  • Etki alanı adı: Contoso

Uç noktalar oluşturma

İki kaynak örneğinizde (OnPremNode1, OnPremNode2) ve hedef SQL Server örneklerinde (SQLVM1, SQLVM2) uç noktalar oluşturmak için Transact-SQL (T-SQL) kullanın.

Kaynak örneklerde yapılandırılmış bir kullanılabilirlik grubunuz zaten varsa, bu betiği yalnızca iki hedef örnekte çalıştırın.

Uç noktalarınızı oluşturmak için bu T-SQL betiğini hem kaynak hem de hedef sunucularda çalıştırın:

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 

Etki alanı hesaplarının uç noktalara otomatik olarak erişimi vardır, ancak hizmet hesapları otomatik olarak sysadmin grubunun parçası olmayabilir ve bağlantı iznine sahip olmayabilir. SQL Server hizmet hesabına uç noktaya bağlanma iznini el ile vermek için her iki sunucuda da aşağıdaki T-SQL betiğini çalıştırın:

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

Kaynak AG oluşturma

Dağıtılmış kullanılabilirlik grubu iki ayrı kullanılabilirlik grubuna yayılan özel bir kullanılabilirlik grubu olduğundan, önce iki kaynak SQL Server örneğinde bir kullanılabilirlik grubu oluşturmanız gerekir.

Kaynak örneklerinizde zaten bir kullanılabilirlik grubunuz varsa bu bölümü atlayın.

Örnek Adventureworks veritabanı için iki kaynak örneğin (OnPremNode1, OnPremNode2) arasında bir kullanılabilirlik grubu (OnPremAG) oluşturmak için Transact-SQL (T-SQL) kullanın.

Kaynak örneklerde kullanılabilirlik grubu oluşturmak için bu betiği kaynak birincil çoğaltmada (OnPremNode1) çalıştırın:

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));	 

Ardından, ikincil çoğaltmayı (OnPremNode2) kullanılabilirlik grubuna (OnPremAg) birleştirmek için.

Kullanılabilirlik grubuna katılmak için bu betiği kaynak ikincil çoğaltmada çalıştırın:

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

Son olarak, genel iletici kullanılabilirlik grubunuz (OnPremAG) için dinleyiciyi oluşturun.

Dinleyiciyi oluşturmak için bu betiği kaynak birincil çoğaltmada çalıştırın:

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

Hedef AG oluşturma

Ayrıca hedef SQL Server VM'lerde de bir kullanılabilirlik grubu oluşturmanız gerekir.

Azure'daki SQL Server örnekleriniz arasında yapılandırılmış bir kullanılabilirlik grubunuz varsa bu bölümü atlayın.

Hedef SQL Server örneklerinde (SQLVM1 ve SQLVM2) bir kullanılabilirlik grubu (AzureAG) oluşturmak için Transact-SQL (T-SQL) kullanın.

Hedefte kullanılabilirlik grubu oluşturmak için bu betiği hedef birincil çoğaltmada çalıştırın:

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 

Ardından, hedef ikincil çoğaltmayı (SQLVM2) kullanılabilirlik grubuna (AzureAG) ekleyin.

Bu betiği hedef ikincil çoğaltmada çalıştırın:

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

Son olarak, hedef kullanılabilirlik grubunuz (AzureAG) için bir dinleyici (AzureAG_LST) oluşturun. SQL Server VM'lerinizi birden çok alt ağa dağıttıysanız, Transact-SQL kullanarak dinleyicinizi oluşturun. SQL Server VM'lerinizi tek bir alt ağa dağıttıysanız, dinleyiciniz için bir Azure Load Balancer veya dağıtılmış ağ adı yapılandırın.

Dinleyicinizi oluşturmak için bu betiği Azure'daki kullanılabilirlik grubunun birincil çoğaltmasında çalıştırın.

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

Dağıtılmış AG oluşturma

Kaynak (OnPremAG) ve hedef (AzureAG) kullanılabilirlik gruplarınızı yapılandırdıktan sonra, her iki kullanılabilirlik grubunu da kapsayan dağıtılmış kullanılabilirlik grubunuzu oluşturun.

Dağıtılmış kullanılabilirlik grubunu (DAG) oluşturmak için kaynak SQL Server genel birincil (OnPremNode1) ve AG (OnPremAG) üzerinde Transact-SQL kullanın.

Kaynakta dağıtılmış AG oluşturmak için bu betiği kaynak genel birincilde çalıştırın:

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 

Not

Tohumlama modu hedefte SQL Server sürümü olarak ayarlanır AUTOMATIC ve kaynak aynıdır. SQL Server hedefiniz daha yüksek bir sürümse veya genel birincil ve ileticinizin farklı örnek adları varsa, dağıtılmış ag'yi oluşturun ve ikincil AG'yi olarak ayarlanmış SEEDING_MODE dağıtılmış ag'ye MANUALekleyin. Ardından veritabanlarınızı kaynaktan hedef SQL Server örneğine el ile geri yükleyin. Daha fazla bilgi edinmek için geçiş sırasında sürümleri yükseltme bölümünü gözden geçirin.

Dağıtılmış AG'niz oluşturulduktan sonra hedef iletici örneğinde (SQLVM1) hedef AG'yi (AzureAG) dağıtılmış AG'ye (DAG) ekleyin.

Hedef AG'yi dağıtılmış AG'ye eklemek için hedef ileticide şu betiği çalıştırın:

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    

Kaynak ve hedef kullanılabilirlik grupları (örneğin, performans sorunları) arasında eşitlemeyi iptal etmeniz, duraklatmanız veya geciktirmeniz gerekiyorsa, bu betiği kaynak genel birincil örnekte (OnPremNode1) çalıştırın:

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

Daha fazla bilgi edinmek için ileticiye otomatik dengeli dağıtımı iptal etme bölümünü gözden geçirin.

Sonraki adımlar

Dağıtılmış kullanılabilirlik grubunuz oluşturulduktan sonra geçişi tamamlamaya hazırsınız.