Yük devretme bağlantısı - Azure SQL Yönetilen Örneği

Şunlar için geçerlidir: Azure SQL Yönetilen Örneği

Bu makalede, olağanüstü durum kurtarma veya geçiş amacıyla SQL Server Management Studio (SSMS) veya PowerShell kullanarak SQL Server ile Azure SQL Yönetilen Örneği arasında bağlantılı bir veritabanının yükünü devretmeyi öğreneceksiniz.

Önkoşullar

Bağlantı aracılığıyla veritabanlarınızı ikincil çoğaltmanıza yük devretmek için aşağıdaki önkoşullara ihtiyacınız vardır:

İş yükünü durdurma

Veritabanınızı ikincil çoğaltmaya devretmeye hazırsanız, önce bakım saatlerinizde birincil çoğaltmadaki tüm uygulama iş yüklerini durdurun. Bu, veri kaybı olmadan ikincilye yük devredebilmeniz için veritabanı çoğaltmasının ikincil çoğaltmayı yakalamasını sağlar. Yük devretmeden önce uygulamalarınızın işlemleri birincile işlemediğinden emin olun.

Veritabanının yük devretmesi

Transact-SQL (T-SQL), SQL Server Management Studio veya PowerShell kullanarak bağlı bir veritabanının yükünü devredebilirsiniz.

SQL Server 2022 CU13 (KB5036432) ile başlayarak Transact-SQL kullanarak bağlantının yükünü devredebilirsiniz.

Bir bağlantı için planlı yük devretme gerçekleştirmek için birincil çoğaltmada aşağıdaki T-SQL komutunu kullanın:

ALTER AVAILABILITY GROUP [<DAGname>] FAILOVER

Zorlamalı yük devretme gerçekleştirmek için ikincil çoğaltmada aşağıdaki T-SQL komutunu kullanın:

ALTER AVAILABILITY GROUP [<DAGname>] FORCE_FAILOVER_ALLOW_DATA_LOSS

Yük devretmeden sonra veritabanını görüntüleme

SQL Server 2022 için, bağlantıyı korumayı seçtiyseniz, dağıtılmış kullanılabilirlik grubunun SQL Server Management Studio'daki Nesne Gezgini Kullanılabilirlik Grupları altında mevcut olup olmadığını denetleyebilirsiniz.

Bağlantıyı yük devretme sırasında bıraktıysanız, dağıtılmış kullanılabilirlik grubunun artık mevcut olmadığını onaylamak için Nesne Gezgini kullanabilirsiniz. Kullanılabilirlik grubunu korumayı seçtiyseniz veritabanı yine eşitlenir.

Yük devretmeden sonra temizleme

Başarılı yük devretme işleminden sonra bağlantıyı kaldır seçilmediği sürece SQL Server 2022 ile yük devretme işlemi bağlantıyı kesmez. Yük devretmeden sonra bağlantıyı koruyabilirsiniz; bu da kullanılabilirlik grubunu ve dağıtılmış kullanılabilirlik grubunu etkin bırakır. Başka bir şey yapmanız gerekmez.

Bağlantıyı bırakmak yalnızca dağıtılmış kullanılabilirlik grubunu bırakır ve kullanılabilirlik grubunu etkin bırakır. Kullanılabilirlik grubunu kullanmaya karar verebilir veya bırakabilirsiniz.

Kullanılabilirlik grubunuzu bırakmaya karar verirseniz aşağıdaki değeri değiştirin ve örnek T-SQL kodunu çalıştırın:

  • <AGName> sql Server'da kullanılabilirlik grubunun adıyla (bağlantıyı oluşturmak için kullanılır).
-- Run on SQL Server
USE MASTER
GO
DROP AVAILABILITY GROUP <AGName> 
GO

Zorlamalı yük devretme sonrasında tutarsız durum

Zorlamalı yük devretmenin ardından iki çoğaltmanın da birincil rolde olduğu ve bağlantıyı tutarsız bir durumda bıraktığı bölünmüş beyinli bir senaryoyla karşılaşabilirsiniz. Bir olağanüstü durum sırasında ikincil çoğaltmaya yük devrederseniz ve birincil çoğaltma yeniden çevrimiçi olduğunda bu durum oluşabilir.

İlk olarak, bölünmüş beyin senaryosunda olduğunuzu onaylayın. Bunu yapmak için SQL Server Management Studio (SSMS) veya Transact-SQL (T-SQL) kullanabilirsiniz.

SSMS'de hem SQL Server'a hem de SQL yönetilen örneğine bağlanın ve Nesne Gezgini'da Always On High Availability'deki Kullanılabilirlik grubu düğümü altında Kullanılabilirlik çoğaltmaları'nı genişletin. İki farklı çoğaltma (Birincil) olarak listeleniyorsa bölünmüş beyin senaryosundasınız demektir.

Alternatif olarak, çoğaltmaların rolünü denetlemek için hem SQL Server'da hem de SQL Yönetilen Örneği aşağıdaki T-SQL betiğini çalıştırabilirsiniz:

-- Execute on SQL Server and SQL Managed Instance 

declare @link_name varchar(max) = '<DAGName>' 
USE MASTER 
GO

SELECT
   ag.name [Link name], 
   rs.role_desc [Link role] 
FROM
   sys.availability_groups ag 
   join sys.dm_hadr_availability_replica_states rs 
   on ag.group_id = rs.group_id 
WHERE 
   rs.is_local = 1 and ag.name = @link_name 
GO

Her iki örnekte de Bağlantı rolü sütununda farklı bir Birincil listeleniyorsa bölünmüş beyin senaryosundasınız demektir.

Bölünmüş beyin durumunu çözmek için ilk olarak özgün birincil çoğaltmayı yedekleyin. Özgün birincil SQL Server ise bir kuyruk günlüğü yedeği alın. Özgün birincil SQL Yönetilen Örneği ise, yalnızca kopya tam yedeklemesini alın. Yedekleme tamamlandıktan sonra, dağıtılmış kullanılabilirlik grubunu özgün birincil olan ancak şimdi yeni ikincil olacak çoğaltmanın ikincil rolüne ayarlayın.

Örneğin, gerçek bir olağanüstü durum durumunda, SQL Server iş yükünüzün yük devretmesini Azure SQL Yönetilen Örneği zorunda kaldığınızı ve iş yükünüzü SQL Yönetilen Örneği çalıştırmaya devam etmeyi planladığınızı varsayarsak, SQL Server'da bir kuyruk günlüğü yedeklemesi alın ve dağıtılmış kullanılabilirlik grubunu SQL Server'da ikincil role ayarlayın. Örneğin, aşağıdaki örnek:

--Execute on SQL Server 
USE MASTER

ALTER availability group [<DAGName>] 
SET (role = secondary) 
GO 

Ardından, aşağıdaki örnek gibi bağlantıyı kullanarak SQL Yönetilen Örneği'dan SQL Server'a planlı bir el ile yük devretme gerçekleştirin:

--Execute on SQL Managed Instance 
USE MASTER

ALTER availability group [<DAGName>] FAILOVER 
GO 

Bağlantıyı kullanmak için:

Bağlantı hakkında daha fazla bilgi edinmek için:

Diğer çoğaltma ve geçiş senaryoları için şunları göz önünde bulundurun: