SQL Yönetilen Örneği'nde kullanıcı tarafından başlatılan el ile yük devretme

Uygulama hedefi: Azure SQL yönetilen örneği

Bu makalede SQL Yönetilen Örneği Genel Amaçlı (GP) ve İş Açısından Kritik (BC) hizmet katmanlarında birincil düğümde el ile yük devretme ve yalnızca BC hizmet katmanında ikincil salt okunur çoğaltma düğümünde el ile yük devretme açıklanmıştır.

El ile yük devretme ne zaman kullanımlı?

Yüksek kullanılabilirlik, SQL Yönetilen Örneği platformunun veritabanı uygulamalarınız için saydam bir şekilde çalışan temel bir kısmıdır. Düğüm bozulması veya hata algılama durumunda ya da düzenli aylık yazılım güncelleştirmeleri sırasında birincil düğümden ikincil düğümlere yük devretmeler, Azure'da SQL Yönetilen Örneği kullanan tüm uygulamalar için beklenen bir durumdur.

Sql Yönetilen Örneği'ne el ile yük devretme yürütmeyi aşağıdaki nedenlerden bazıları için kullanabilirsiniz:

  • Üretime dağıtmadan önce uygulamayı yük devretmeye karşı test etmek için
  • Otomatik yük devretmelerde hataya karşı sıyrılık testi
  • Yük devretmenin mevcut veritabanı oturumlarını nasıl etkilemektedir?
  • Ağ gecikme süresinde yapılan değişikliklerden dolayı yük devretmenin 14.000'den 20.000'e kadar olan performansı etkileyeni olduğunu doğrulayın
  • Bazı sorgu performansı düşüşleri durumlarında el ile yük devretme, performans sorununa yardımcı olabilir.

Not

Uygulamalarınızı üretime dağıtmadan önce yük devretmeye karşı daha iyi bir şekilde çalışmanızı sağlamak, üretimde uygulama hatalarının riskinin azaltılamayacak ve müşterileriniz için uygulama kullanılabilirliği sağlayacaktır. SQL Yönetilen Örneği video düzeltmesi ile Uygulama Bulut Için Yük DevretmeYe hazır olma testi ile uygulamalarınızı bulut için hazır olma için test etme hakkında daha fazla bilgi edinebilirsiniz.

SQL Yönetilen Örneğinde el ile yük devretme başlatma

Azure RBAC izinleri gerekiyor

Yük devretme başlatan kullanıcının aşağıdaki Azure rollerinden biri olması gerekir:

PowerShell'i kullanma

Az.Sql'in en düşük sürümünün v2.9.0 olması gerekir. Her zaman en Azure Cloud Shell PowerShell Azure portal bir sürüme sahip olan veri kaynağından bir komut kullanmayı göz önünde bulundurabilirsiniz.

Ön gereksinim olarak, gerekli Azure modüllerini yüklemek için aşağıdaki PowerShell betiği kullanın. Ayrıca, yük devretmek istediğiniz Yönetilen Örneğin bulunduğu aboneliği seçin.

$subscription = 'enter your subscription ID here'
Install-Module -Name Az
Import-Module Az.Accounts
Import-Module Az.Sql

Connect-AzAccount
Select-AzSubscription -SubscriptionId $subscription

Hem BC hem de GP hizmet katmanı için geçerli olan birincil düğümün yük devretmesini başlatmak için aşağıdaki örnekle Birlikte Invoke-AzSqlInstanceFailover PowerShell komutunu kullanın.

$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName

Salt BC hizmet katmanı için geçerli olan ikinci düğümün yük devretmesi için aşağıdaki PS komutunu kullanın.

$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName -ReadableSecondary

CLI kullanma

En son CLI betiklerini yüklemiş olduğundan emin olun.

Birincil düğümün yük devretmesini başlatmak için aşağıdaki örnekle birlikte hem BC hem de GP hizmet katmanı için geçerli olan az sql mi yük devretme CLI komutunu kullanın.

az sql mi failover -g myresourcegroup -n myinstancename

Yalnızca BC hizmet katmanı için geçerli olan ikinci düğümün yük devretmesini yapmak için aşağıdaki CLI komutunu kullanın.

az sql mi failover -g myresourcegroup -n myinstancename --replica-type ReadableSecondary

Rest API'yi kullanma

Sürekli test işlem hattı veya otomatik performans toplayıcıları uygulamak amacıyla SQL Yönetilen Örneklerinin yük devretmelerini otomatikleştirmesi gerektirilen ileri düzey kullanıcılar için bu işlev, bir API çağrısı aracılığıyla yük devretme başlatarak gerçekleştirilmiş olabilir. Ayrıntılar için bkz. Yönetilen Örnekler - REST API devretme.

Bu çağrıyı kullanarak REST API başlatmak için ilk olarak tercihiniz API istemcisini kullanarak Kimlik Doğrulama Belirteci'ne sahip olursunuz. Oluşturulan kimlik doğrulama belirteci, API isteğinin üst bilgisinde Authorization özelliği olarak kullanılır ve zorunludur.

Aşağıdaki kod çağrılabilir API URI'si örneğidir:

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/failover?api-version=2019-06-01-preview

API çağrısında aşağıdaki özelliklerin geçiri olması gerekir:

API özelliği Parametre
subscriptionId Yönetilen örneğin dağıtılacağı abonelik kimliği
resourceGroupName Yönetilen örneği içeren kaynak grubu
managedInstanceName Yönetilen örneğin adı
Replicatype (İsteğe bağlı) (Birincil veya ReadableSecondary). Bu parametreler, başarısız olacak çoğaltma türünü temsil ediyor: birincil veya okunabilir ikincil. Belirtilmezse, varsayılan olarak birincil çoğaltmada yük devretme başlatılır.
api-sürümü Statik değer ve şu anda "2019-06-01-preview" olması gerekir

API yanıtı aşağıdaki iki yanıtlardan biri olur:

  • 202 Kabul Edildi
  • 400 istek hatalarından biri.

İşlem durumu, yanıt üst bilgisinde API yanıtları gözden geçirerek takip olabilir. Daha fazla bilgi için bkz. Zaman uyumsuz Azure işlemlerinin durumu.

Yük devretmeyi izleme

BC örneğiniz için kullanıcı tarafından başlatılan yük devretmenin ilerleme durumunu izlemek için SQL Yönetilen Örneği'nin sık kullanılan istemcisinde (SSMS gibi) aşağıdaki T-SQL sorgusunu yürütün. Örnekte kullanılabilir olan sistem sys.dm_hadr_fabric_replica_states ve rapor çoğaltmalarını okur. El ile yük devretmeyi başlatan sorguyu yenileyin.

SELECT DISTINCT replication_endpoint_url, fabric_replica_role_desc FROM sys.dm_hadr_fabric_replica_states

Yük devretmeyi başlatmadan önce çıktınız, AlwaysOn Kullanılabilirlik Grubu'nda bir birincil ve üç ikincil çoğaltma içeren BC hizmet katmanındaki geçerli birincil çoğaltmayı belirtir. Yük devretmenin yürütülmesinin ardından bu sorguyu yeniden çalıştırmanın birincil düğümde bir değişiklik olduğunu belirt olması gerekir.

BC için yukarıdakiyle aynı gp hizmet katmanıyla aynı çıktıyı göresiniz. Bunun nedeni GP hizmet katmanının yalnızca tek bir düğüme dayalı olmasıdır. GP hizmet katmanı örneği için düğümde SQL işleminin başlat olduğu zamanı gösteren alternatif T-SQL sorgusunu kullanabilirsiniz:

SELECT sqlserver_start_time, sqlserver_start_time_ms_ticks FROM sys.dm_os_sys_info

Genellikle bir dakikanın altında olan yük devretme sırasında istemcinizin bağlantı kaybı, hizmet katmanından bağımsız olarak yük devretme yürütmenin göstergesi olacaktır.

Not

Yüksek yoğunluklu iş yüklerinde yük devretme işleminin tamamlanması (gerçek kısa kullanılamaması değil) birkaç dakika sürebilir. Bunun nedeni, yük devretmeden önce örnek altyapısının birincil düğümdeki tüm geçerli işlemlerle ilgilenmesi ve ikincil düğümü yakalamasıdır.

Önemli

Kullanıcı tarafından başlatılan el ile yük devretmenin işlevsel sınırlamaları:

  • Aynı Yönetilen Örnekte her 15 dakikada bir (1) yük devretme başlatılmış olabilir.
  • BC örnekleri için yük devretme isteğinin kabul edileb bir çoğaltma çekirdekleri olması gerekir.
  • BC örnekleri için yük devretmenin başlatıldığı okunabilir ikincil çoğaltmayı belirtmek mümkün değildir.
  • Yeni bir veritabanı için ilk tam yedekleme otomatik yedekleme sistemleri tarafından tamamlanana kadar yük devretmeye izin verilmez.
  • Devam eden bir veritabanı geri yüklemesi varsa yük devretmeye izin verilmez.

Sonraki adımlar