Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dağıtılmış bir kullanılabilirlik grubu (AG) kullanarak bir Always On kullanılabilirlik grubundaki veritabanlarını geçirirken, Azure Sanal Makineler'deki (VM) SQL Server'ınızda yüksek kullanılabilirlik ve olağanüstü durum kurtarma (HADR) desteğini geçiş sonrası da koruyabilirsiniz.
Kaynak SQL Server örneklerinizin önkoşullara uygun olduğunu doğruladıktan sonra, var olan kullanılabilirlik grubunuz ve Azure VM'leri üzerindeki SQL Server'ınızdaki 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 bir Windows Server Yük Devretme Kümesi (WSFC) ve bir kullanılabilirlik grubu dinleyicisi gerektirir. Veritabanlarını tek başına bir SQL Server örneğinden geçirmek de mümkündür.
İlk kurulum
İlk adım, Azure'da SQL Server VM'lerinizi oluşturmaktır. Azure portalını, Azure PowerShell'i veya ARM şablonunu kullanarak bunu yapabilirsiniz.
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'a veya dağıtılmış ağ adına dayalı tek bir alt ağ dağıtımı ya da böyle bir gereksinimi olmayan çok alt ağ dağıtımı arasında seçim yapın. Çok alt ağ dağıtımı önerilir. 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 tohumlama kullanmanız ve gelecekte ek veritabanı dosyalarını el ile eklemeniz gerekir.
Bu makalede aşağıdaki örnek parametreler kullanılır:
- Veritabanı adı:
Adventureworks2022 - 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 örneği adları üzerinde 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ç nokta oluşturma
hem iki kaynak örneğinde (, ) hem de hedef SQL Server örneğinde (OnPremNode1, OnPremNode2SQLVM1) uç noktalar oluşturmak için Transact-SQL (SQLVM2T-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 DATABASE_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 el ile bağlanma izni 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.
OnPremNode1, OnPremNode2 arasındaki iki kaynak örneğin örnek Adventureworks2022 veritabanı için bir kullanılabilirlik grubu (OnPremAG) oluşturmak üzere Transact-SQL (T-SQL) kullanın.
Kaynak örneklerde kullanılabilirlik grubu oluşturmak için bu betiği kaynak birincil replikada (OnPremNode1) çalıştırın.
CREATE AVAILABILITY GROUP [OnPremAG]
WITH (
AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
DB_FAILOVER = OFF,
DTC_SUPPORT = NONE
)
FOR DATABASE [Adventureworks2022] 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 ) eklemek için.
Kullanılabilirlik grubuna katılmak için bu betiği kaynak ikincil kopyada çalıştırın.
ALTER AVAILABILITY GROUP [OnPremAG] JOIN;
GO
ALTER AVAILABILITY GROUP [OnPremAG] GRANT CREATE ANY DATABASE;
GO
Son olarak, küresel 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'lerinde de bir kullanılabilirlik grubu oluşturmanız gerekir.
Azure'daki SQL Server örnekleriniz arasında yapılandırılmış bir kullanılabilirlik grubunuz zaten varsa bu bölümü atlayın.
hedef SQL Server örnekleri (SQLVM1 ve SQLVM2) üzerinde (AzureAG) bir kullanılabilirlik grubu oluşturmak için Transact-SQL (T-SQL) kullanın.
Hedefte kullanılabilirlik grubu oluşturmak için, bu komut dosyasını 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 replikada ç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_LST) için bir dinleyici (AzureAG) 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 yüksek erişilebilirlik grubunun primer replikasında çalıştırın.
ALTER AVAILABILITY GROUP [AzureAG]
ADD LISTENER N'AzureAG_LST' (
WITH IP (
(N'<primary replica_secondary_ip>', N'<primary_mask>'),
(N'<secondary replica_secondary_ip>', N'<secondary_mask>')
),
PORT = <port_number_you_set>
);
GO
Dağıtılmış AG oluşturma
Kaynak () ve hedef (OnPremAGAzureAG) 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 () oluşturmak için kaynak SQL Server genel birincil (OnPremNode1) ve AG'de (OnPremAGDAG) Transact-SQL kullanın.
Kaynakta dağıtılmış AG oluşturmak için bu betiği kaynak genel birincil üzerinde ç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
Uyarı
Hedef ve kaynakta SQL Server sürümü aynı olduğundan tohumlama modu AUTOMATIC olarak ayarlanmıştır. SQL Server hedefiniz daha yüksek bir sürümse veya genel birincil ve ileticinizin farklı örnek adları varsa, dağıtılmış grubu oluşturun ve ikincil AG'yi, SEEDING_MODE olarak MANUAL ayarlayarak dağıtılmış gruba katın. 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ükseltmeyi gözden geçirin.
Dağıtılmış AG'niz oluşturulduktan sonra, hedef iletici örneğindeki (AzureAG) hedef AG'yi (SQLVM1) dağıtılmış AG'ye () ekleyinDAG.
Hedef AG'yi dağıtılmış AG'ye eklemek için hedef ileticide şu betiği çalıştırın:
ALTER AVAILABILITY GROUP [DAG]
INNER 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ı arasında senkronizasyonu iptal etmeniz, duraklatmanız veya geciktirmeniz gerekiyorsa (örneğin, performans sorunları), bu betiği kaynak küresel birincil örnekte çalıştırın (OnPremNode1):
ALTER AVAILABILITY GROUP [DAG]
MODIFY AVAILABILITY GROUP ON 'AzureAG'
WITH (SEEDING_MODE = MANUAL);
Daha fazla bilgi edinmek için İleticiye otomatik aktarımı iptal etme konusunu gözden geçirebilirsiniz.