Zainicjowane przez użytkownika ręczne przejście w tryb failover w usłudze SQL Managed Instance

Dotyczy:Azure SQL Managed Instance

W tym artykule opisano sposób ręcznego przełączania węzła podstawowego w tryb failover w warstwach usługi Ogólnego przeznaczenia usługi sql Managed Instance (GP) i Krytyczne dla działania firmy (BC) oraz ręczne przełączanie w tryb failover pomocniczego węzła repliki tylko do odczytu w warstwie usługi BC.

Uwaga

Ten artykuł nie jest związany z trybami failover między regionami z grupami trybu failover.

Kiedy należy użyć ręcznego przejścia w tryb failover

Wysoka dostępność to podstawowa część platformy usługi SQL Managed Instance, która działa w sposób niewidoczny dla aplikacji bazy danych. Przejścia w tryb failover z węzłów podstawowych do pomocniczych w przypadku obniżenia wydajności węzła lub wykrycia usterki albo podczas regularnych comiesięcznych aktualizacji oprogramowania są oczekiwanym zachowaniem w przypadku wszystkich aplikacji korzystających z usługi SQL Managed Instance na platformie Azure.

Możesz rozważyć ręczne przejście w tryb failover w usłudze SQL Managed Instance z następujących powodów:

  • Testowanie aplikacji pod kątem odporności na pracę w trybie failover przed wdrożeniem ich w środowisku produkcyjnym
  • Testowanie kompleksowych systemów pod kątem odporności na usterkę przy automatycznych przejściach w tryb failover
  • Testowanie wpływu trybu failover na istniejące sesje bazy danych
  • Sprawdzanie, czy tryb failover zmienia wydajność z powodu zmian opóźnienia sieci
  • W niektórych przypadkach obniżenia wydajności zapytań ręczne przejście w tryb failover może pomóc w wyeliminowaniu problemu z wydajnością.

Uwaga

Zapewnienie odporności aplikacji na tryb failover przed wdrożeniem w środowisku produkcyjnym pomaga ograniczyć ryzyko błędów aplikacji w środowisku produkcyjnym i przyczynia się do dostępności aplikacji dla klientów. Dowiedz się więcej o testowaniu aplikacji pod kątem gotowości do chmury przy użyciu testowania gotowości do chmury aplikacji pod kątem odporności w trybie failover za pomocą nagrywania wideo usługi SQL Managed Instance .

Inicjowanie ręcznego przejścia w tryb failover w usłudze SQL Managed Instance

Wymagane uprawnienia RBAC platformy Azure

Użytkownicy inicjujący tryb failover muszą mieć jedną z następujących ról platformy Azure:

  • Rola właściciela subskrypcji lub
  • Rola współautora wystąpienia zarządzanego SQL lub
  • Rola niestandardowa z następującym uprawnieniem:
    • Microsoft.Sql/managedInstances/failover/action

Korzystanie z programu PowerShell

Minimalna wersja modułu Az.Sql musi być w wersji 2.9.0. Rozważ użycie usługi Azure Cloud Shell w witrynie Azure Portal, która zawsze ma najnowszą dostępną wersję programu PowerShell.

Aby zainstalować wymagane moduły platformy Azure, użyj następującego skryptu programu PowerShell. Ponadto wybierz subskrypcję, w której znajduje się wystąpienie zarządzane SQL, do którego chcesz przejść w tryb failover.

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

Connect-AzAccount
Select-AzSubscription -SubscriptionId $subscription

Użyj polecenia programu PowerShell Invoke-AzSqlInstanceFailover z poniższym przykładem, aby zainicjować tryb failover węzła podstawowego, który ma zastosowanie zarówno do warstwy usługi BC, jak i GP.

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

Użyj następującego polecenia programu PowerShell, aby przejść w tryb failover do odczytu pomocniczego węzła, który ma zastosowanie tylko do warstwy usług BC.

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

Korzystanie z interfejsu wiersza polecenia (CLI)

Upewnij się, że zainstalowano najnowsze skrypty interfejsu wiersza polecenia.

Użyj polecenia az sql mi failover interfejsu wiersza polecenia z poniższym przykładem, aby zainicjować tryb failover węzła podstawowego, który ma zastosowanie zarówno do warstwy usługi BC, jak i GP.

az sql mi failover -g myresourcegroup -n myinstancename

Użyj następującego polecenia interfejsu wiersza polecenia, aby przejść w tryb failover do odczytu węzła pomocniczego, który ma zastosowanie tylko do warstwy usług BC.

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

Korzystanie z interfejsu API REST

W przypadku zaawansowanych użytkowników, którzy prawdopodobnie musieliby zautomatyzować tryb failover swoich wystąpień zarządzanych SQL na potrzeby implementowania potoku ciągłego testowania lub zautomatyzowanego ograniczania wydajności, tę funkcję można wykonać za pomocą inicjowania trybu failover za pośrednictwem wywołania interfejsu API. Aby uzyskać szczegółowe informacje, zobacz SQL Managed Instances — interfejs API REST trybu failover.

Aby zainicjować tryb failover przy użyciu wywołania interfejsu API REST, najpierw wygeneruj token uwierzytelniania przy użyciu wybranego klienta interfejsu API. Wygenerowany token uwierzytelniania jest używany jako właściwość Autoryzacja w nagłówku żądania interfejsu API i jest obowiązkowy.

Poniższy kod jest przykładem identyfikatora URI interfejsu API do wywołania:

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

Następujące właściwości należy przekazać w wywołaniu interfejsu API:

Właściwość interfejsu API Parametr
subscriptionId Identyfikator subskrypcji, do którego wdrożono wystąpienie zarządzane
resourceGroupName Grupa zasobów zawierająca wystąpienie zarządzane
managedInstanceName Nazwa wystąpienia zarządzanego
replicaType (Opcjonalnie) (Primary lub ReadableSecondary). Te parametry reprezentują typ repliki, który ma zostać przełączony w tryb failover: podstawowy lub możliwy do odczytu pomocniczy. Jeśli nie zostanie określony, tryb failover jest domyślnie inicjowany w repliki podstawowej.
api-version Wartość statyczna i obecnie musi mieć wartość "2019-06-01-preview"

Interfejs API odpowiada za pomocą jednego z następujących dwóch:

  • Zaakceptowano 202
  • Jeden z 400 błędów żądania.

Stan operacji można śledzić za pomocą przeglądania odpowiedzi interfejsu API w nagłówkach odpowiedzi. Aby uzyskać więcej informacji, zobacz Stan asynchronicznych operacji platformy Azure.

Monitorowanie trybu failover

Aby monitorować postęp trybu failover zainicjowanego przez użytkownika dla wystąpienia bc, wykonaj następujące zapytanie T-SQL w ulubionym kliencie (takim jak program SSMS) w usłudze SQL Managed Instance. Odczytuje on widok systemu sys.dm_hadr_fabric_replica_states i repliki raportów dostępne w wystąpieniu. Odśwież to samo zapytanie po zainicjowaniu ręcznego przejścia w tryb failover.

SELECT DISTINCT replication_endpoint_url, fabric_replica_role_desc FROM sys.dm_hadr_fabric_replica_states

Przed zainicjowaniem trybu failover dane wyjściowe wskazują bieżącą replikę podstawową w warstwie usługi BC zawierającej jeden podstawowy i trzy sekundy w zawsze włączonej grupie dostępności. Po wykonaniu trybu failover ponowne uruchomienie tego zapytania wymagałoby wskazania zmiany węzła podstawowego.

Nie będzie można zobaczyć tych samych danych wyjściowych z warstwą usługi gp co powyżej pokazana dla bc. Dzieje się tak, ponieważ warstwa usługi gp jest oparta tylko na jednym węźle. Możesz użyć alternatywnego zapytania T-SQL pokazującego czas rozpoczęcia procesu SQL w węźle dla wystąpienia warstwy usługi gp:

SELECT sqlserver_start_time, sqlserver_start_time_ms_ticks FROM sys.dm_os_sys_info

Krótka utrata łączności z klientem podczas pracy w trybie failover, zwykle trwa poniżej minuty, jest wskazaniem wykonania trybu failover niezależnie od warstwy usługi.

Uwaga

Ukończenie procesu pracy w trybie failover (a nie rzeczywista krótka niedostępność) może potrwać kilka minut w przypadku obciążeń o wysokiej intensywności . Dzieje się tak, ponieważ aparat wystąpień zajmuje się wszystkimi bieżącymi transakcjami w ramach węzła podstawowego i nadrabia zaległości w węźle pomocniczym, zanim będzie mógł przejść w tryb failover.

Ważne

Ograniczenia funkcjonalne ręcznego przechodzenia w tryb failover inicjowane przez użytkownika to:

  • Może istnieć jeden (1) tryb failover zainicjowany w tym samym wystąpieniu zarządzanym SQL co 15 minut.
  • W przypadku wystąpień bc musi istnieć kworum replik, aby żądanie trybu failover zostało zaakceptowane.
  • W przypadku wystąpień BC nie można określić, która replika pomocnicza do odczytu ma inicjować tryb failover.
  • Przejście w tryb failover nie będzie dozwolone do momentu ukończenia pierwszej pełnej kopii zapasowej nowej bazy danych przez zautomatyzowane systemy kopii zapasowych.
  • Tryb failover nie będzie dozwolony, jeśli istnieje przywracanie bazy danych w toku.

Następne kroki