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

Şunlar için geçerlidir: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üğüme el ile yük devretme ve yalnızca BC hizmet katmanında ikincil salt okunur çoğaltma düğümüne el ile yük devretme işlemleri açıklanmaktadır.

Not

Bu makale, yük devretme gruplarıyla bölgeler arası yük devretme işlemleriyle ilgili değildir.

El ile yük devretme ne zaman kullanılır?

Yüksek kullanılabilirlik, veritabanı uygulamalarınız için saydam bir şekilde çalışan SQL Yönetilen Örneği platformunun temel bir parçası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üğümlerden ikincil düğümlere yük devretme, Azure'da SQL Yönetilen Örneği kullanan tüm uygulamalar için beklenen bir durumdur.

Aşağıdaki nedenlerden bazıları nedeniyle SQL Yönetilen Örneği üzerinde el ile yük devretme gerçekleştirmeyi düşünebilirsiniz:

  • Üretime dağıtmadan önce, yük devretme dayanıklılığı için uygulamayı test etme
  • Otomatik yük devretmelerde hata dayanıklılığı için uçtan uca sistemleri test etme
  • Yük devretmenin mevcut veritabanı oturumlarını nasıl etkilediğini test etme
  • Ağ gecikme süresindeki değişiklikler nedeniyle yük devretmenin uçtan uca performansı değiştirip değiştirmediğini doğrulama
  • Sorgu performansında düşüşlerin olduğu bazı durumlarda elle yük devretme, performans sorununu azaltmaya yardımcı olabilir.

Not

Üretime dağıtmadan önce uygulamalarınızın yük devretmeye dayanıklı olduğundan emin olmak, üretimde uygulama hatası riskini azaltmaya yardımcı olur ve müşterileriniz için uygulama kullanılabilirliğine katkıda bulunur. SQL Yönetilen Örneği video kaydıyla Yük Devretme Dayanıklılığı için Test Uygulaması Bulut Hazırlığı özelliğiyle uygulamalarınızı buluta hazır olma durumunu test etme hakkında daha fazla bilgi edinin.

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

Azure RBAC izinleri gerekli

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

  • Abonelik Sahibi rolü veya
  • Katkıda Bulunan rolünü SQL Yönetilen Örneği veya
  • Aşağıdaki izne sahip özel rol:
    • Microsoft.Sql/managedInstances/failover/action

PowerShell’i kullanma

Az.Sql'in en düşük sürümünün v2.9.0 olması gerekir. Her zaman en son PowerShell sürümünün kullanılabildiği Azure portalından Azure Cloud Shell'i kullanmayı göz önünde bulundurun.

Önkoşul olarak, gerekli Azure modüllerini yüklemek için aşağıdaki PowerShell betiğini kullanın. Ayrıca, yük devretmek istediğiniz SQL Yönetilen Örneği 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

Yalnızca BC hizmet katmanı için geçerli olan ikincil düğümü okumak için aşağıdaki PowerShell 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 betiklerinin yüklü olduğundan emin olun.

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 az sql mi failover CLI komutunu kullanın.

az sql mi failover -g myresourcegroup -n myinstancename

Yalnızca BC hizmet katmanı için geçerli olan ikincil düğümü okumak için aşağıdaki CLI komutunu kullanın.

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

REST API kullanma

Sürekli test işlem hattı veya otomatik performans başlatıcıları uygulamak amacıyla SQL Yönetilen Örneği yük devretme işlemlerini otomatikleştirmesi gerekebilecek 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ştirilebilir. Ayrıntılar için bkz. SQL Yönetilen Örneği s - Yük Devretme REST API'si.

REST API çağrısını kullanarak yük devretmeyi başlatmak için önce istediğiniz API istemcisini kullanarak Kimlik Doğrulama Belirtecini oluşturun. Oluşturulan kimlik doğrulama belirteci, API isteğinin üst bilgisinde Yetkilendirme özelliği olarak kullanılır ve zorunludur.

Aşağıdaki kod çağrılacak API URI'sinin bir ö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çirilmesi gerekir:

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

API aşağıdaki ikiden biriyle yanıt verir:

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

İşlem durumu, yanıt üst bilgilerinde API yanıtlarını gözden geçirerek izlenebilir. 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 devretme işleminin ilerleme durumunu izlemek için, SQL Yönetilen Örneği'da sık kullandığınız istemcide (SSMS gibi) aşağıdaki T-SQL sorgusunu yürütün. Örnekte bulunan sistem görünümünü sys.dm_hadr_fabric_replica_states ve rapor çoğaltmalarını okur. El ile yük devretmeyi başlatdıktan sonra aynı 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, Always On Kullanılabilirlik Grubu'nda bir birincil ve üç ikincil içeren BC hizmet katmanındaki geçerli birincil çoğaltmayı gösterir. Yük devretmenin yürütülmesinin ardından bu sorgunun yeniden çalıştırılması birincil düğümde bir değişikliğin gösterilmesi gerekir.

GP hizmet katmanında, bc için yukarıdakiyle aynı çıktıyı göremezsiniz. 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şladığı 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 dakikadan kısa süren yük devretme sırasında istemcinizden kısa bir bağlantı kaybı, hizmet katmanından bağımsız olarak yük devretme yürütmesinin göstergesidir.

Not

Yüksek yoğunluklu iş yükleri söz konusu olduğunda yük devretme işleminin tamamlanması (gerçek kısa kullanılamazlık 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şlemleri gerçekleştirmesi ve ikincil düğümde yakalamasıdır.

Önemli

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

  • Her 15 dakikada bir aynı SQL Yönetilen Örneği bir (1) yük devretme başlatılabilir.
  • İBH örnekleri için yük devretme isteğinin kabul edilmesi için çoğaltmaların çekirdekleri bulunmalıdır.
  • BC örnekleri için yük devretmenin hangi okunabilir ikincil çoğaltmada başlatılacağını 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