Ruční převzetí služeb při selhání iniciované uživatelem ve službě SQL Managed Instance

Platí pro:Azure SQL Managed Instance

Tento článek vysvětluje, jak ručně převzít služby při selhání primárního uzlu na úrovni služby SQL Managed Instance pro obecné účely (GP) a Pro důležité obchodní informace (BC) a jak ručně převzít služby při selhání sekundárního uzlu repliky jen pro čtení na úrovni služby BC.

Poznámka:

Tento článek nesouvisí s převzetím služeb při selhání mezi oblastmi se skupinami převzetí služeb při selhání.

Kdy použít ruční převzetí služeb při selhání

Vysoká dostupnost je základní součástí platformy SQL Managed Instance, která transparentně funguje pro vaše databázové aplikace. Převzetí služeb primárního uzlu při selhání na sekundární uzel v případě snížení výkonu uzlu nebo detekce chyb, případně při pravidelných měsíčních aktualizacích softwaru, se očekává u všech aplikací používajících službu SQL Managed Instance v Azure.

Můžete zvážit provedení ručního převzetí služeb při selhání ve službě SQL Managed Instance z některého z následujících důvodů:

  • Testování odolnosti převzetí služeb při selhání před nasazením do produkčního prostředí
  • Testování odolnosti kompletních systémů proti selhání u automatických převzetí služeb při selhání
  • Testování dopadu převzetí služeb při selhání na existující databázové relace
  • Ověření, jestli převzetí služeb při selhání kvůli změnám latence sítě změní celkový výkon
  • V některých případech snížení výkonu dotazů může ruční převzetí služeb při selhání pomoct zmírnit problém s výkonem.

Poznámka:

Zajištění odolnosti vašich aplikací před nasazením do produkčního prostředí pomáhá zmírnit riziko chyb aplikací v produkčním prostředí a přispět k dostupnosti aplikací pro vaše zákazníky. Přečtěte si další informace o testování aplikací pro připravenost na cloud s využitím testování připravenosti aplikace na cloud pro zajištění odolnosti při selhání pomocí záznamu videa služby SQL Managed Instance .

Zahájení ručního převzetí služeb při selhání ve službě SQL Managed Instance

Požadovaná oprávnění Azure RBAC

Uživatelé, kteří iniciují převzetí služeb při selhání, musí mít jednu z následujících rolí Azure:

  • Role vlastníka předplatného, nebo
  • Role Přispěvatel spravované instance SQL nebo
  • Vlastní role s následujícími oprávněními:
    • Microsoft.Sql/managedInstances/failover/action

Pomocí prostředí PowerShell

Minimální verze Az.Sql musí být v2.9.0. Zvažte použití Azure Cloud Shellu z webu Azure Portal, která má vždy k dispozici nejnovější verzi PowerShellu.

Jako předběžný požadavek použijte následující skript PowerShellu k instalaci požadovaných modulů Azure. Kromě toho vyberte předplatné, ve kterém se nachází spravovaná instance SQL, kterou chcete provést převzetí služeb při selhání.

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

Connect-AzAccount
Select-AzSubscription -SubscriptionId $subscription

Pomocí příkazu PowerShell Invoke-AzSqlInstanceFailover s následujícím příkladem zahajte převzetí služeb při selhání primárního uzlu, které platí pro úroveň služby BC i GP.

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

K převzetí služeb při selhání sekundárního uzlu čtení použijte následující příkaz PowerShellu, který se vztahuje pouze na úroveň služby BC.

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

Pomocí rozhraní příkazového řádku

Ujistěte se, že máte nainstalované nejnovější skripty rozhraní příkazového řádku.

K zahájení převzetí služeb při selhání primárního uzlu použijte příkaz az sql mi cli s následujícím příkladem, který platí pro úroveň služby BC i GP.

az sql mi failover -g myresourcegroup -n myinstancename

Následující příkaz rozhraní příkazového řádku použijte k převzetí služeb při selhání sekundárního uzlu čtení, který se vztahuje pouze na úroveň služby BC.

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

Pomocí rozhraní REST API

U pokročilých uživatelů, kteří by možná potřebovali automatizovat převzetí služeb při selhání služby SQL Managed Instance pro účely implementace kanálu průběžného testování nebo automatizovaných omezení výkonu, je možné tuto funkci provést prostřednictvím zahájení převzetí služeb při selhání prostřednictvím volání rozhraní API. Podrobnosti najdete v tématu Spravované instance SQL – Rozhraní REST API s podporou převzetí služeb při selhání.

Pokud chcete zahájit převzetí služeb při selhání pomocí volání rozhraní REST API, nejprve vygenerujte ověřovací token pomocí klienta rozhraní API podle vašeho výběru. Vygenerovaný ověřovací token se používá jako vlastnost Autorizace v hlavičce požadavku rozhraní API a je povinný.

Následující kód je příkladem identifikátoru URI rozhraní API pro volání:

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

Ve volání rozhraní API je potřeba předat následující vlastnosti:

Vlastnost rozhraní API Parametr
subscriptionId ID předplatného, do kterého se spravovaná instance nasadí
resourceGroupName Skupina prostředků obsahující spravovanou instanci
managedInstanceName Název spravované instance
replicaType (Volitelné) (Primární nebo čitelnýsecondary). Tyto parametry představují typ repliky, která se má převzít při selhání: primární nebo čitelná sekundární. Pokud ho nezadáte, ve výchozím nastavení se na primární replice zahájí převzetí služeb při selhání.
verze-api Statická hodnota a aktuálně musí být 2019-06-01-preview

Rozhraní API reaguje jedním z následujících dvou způsobů:

  • 202 Přijato
  • Jedna z chyb 400 požadavků.

Stav operace je možné sledovat prostřednictvím kontroly odpovědí rozhraní API v hlavičce odpovědí. Další informace najdete v tématu Stav asynchronních operací Azure.

Monitorování převzetí služeb při selhání

Pokud chcete monitorovat průběh převzetí služeb při selhání iniciovaného uživatelem pro vaši instanci BC, spusťte následující dotaz T-SQL ve vašem oblíbeném klientovi (například SSMS) ve spravované instanci SQL. Přečte systémové zobrazení sys.dm_hadr_fabric_replica_states a repliky sestav dostupné v instanci. Po zahájení ručního převzetí služeb při selhání aktualizujte stejný dotaz.

SELECT DISTINCT replication_endpoint_url, fabric_replica_role_desc FROM sys.dm_hadr_fabric_replica_states

Před zahájením převzetí služeb při selhání výstup indikuje aktuální primární repliku na úrovni služby BC obsahující jednu primární a tři sekundární skupiny dostupnosti AlwaysOn. Při spuštění převzetí služeb při selhání by spuštění tohoto dotazu bylo potřeba indikovat změnu primárního uzlu.

Nebudete moct zobrazit stejný výstup s úrovní služby GP jako výše uvedený výstup pro BC. Důvodem je to, že úroveň služby GP je založená pouze na jednom uzlu. Můžete použít alternativní dotaz T-SQL zobrazující čas spuštění procesu SQL na uzlu pro instanci úrovně služby GP:

SELECT sqlserver_start_time, sqlserver_start_time_ms_ticks FROM sys.dm_os_sys_info

Krátká ztráta připojení z vašeho klienta během převzetí služeb při selhání, která obvykle trvá méně než minutu, značí spuštění převzetí služeb při selhání bez ohledu na úroveň služby.

Poznámka:

Dokončení procesu převzetí služeb při selhání (ne skutečná krátká nedostupnost) může v případě úloh s vysokou intenzitou trvat několik minut. Důvodem je to, že modul instancí se stará o všechny aktuální transakce na primárním a zachytávání na sekundárním uzlu před převzetím služeb při selhání.

Důležité

Funkční omezení ručního převzetí služeb při selhání iniciované uživatelem jsou:

  • Ve stejné instanci SQL Managed Instance může být každých 15 minut spuštěno jedno (1) převzetí služeb při selhání.
  • Pro instance BC musí existovat kvorum replik pro přijetí požadavku na převzetí služeb při selhání.
  • V případě instancí BC není možné určit, pro kterou čitelný sekundární repliku se má zahájit převzetí služeb při selhání.
  • Převzetí služeb při selhání nebude povoleno, dokud automatizované systémy zálohování nedokončí první úplné zálohování nové databáze.
  • Převzetí služeb při selhání nebude povoleno, pokud probíhá obnovení databáze.

Další kroky