Wysoka dostępność i Azure SQL DatabaseHigh-availability and Azure SQL Database

Celem architektury wysokiej dostępności w Azure SQL Database jest zagwarantowanie, że baza danych działa i działa 99,99% czasu, bez zakłócania wpływu operacji konserwacji i przestojów.The goal of the High Availability architecture in Azure SQL Database is to guarantee that your database is up and running 99.99% of time, without worrying about the impact of maintenance operations and outages. Platforma Azure automatycznie obsługuje krytyczne zadania obsługi, takie jak stosowanie poprawek, kopii zapasowych, uaktualnienia systemu Windows i programu SQL, a także niezaplanowanych zdarzeń, takich jak sprzętowe, programowe lub awarie sieci.Azure automatically handles critical servicing tasks, such as patching, backups, Windows and SQL upgrades, as well as unplanned events such as underlying hardware, software, or network failures. Gdy bazowe wystąpienie programu SQL Server jest poprawione lub działa w trybie failover, przestoje nie jest zauważalne, jeśli w aplikacji jest stosowana logika ponawiania .When the underlying SQL instance is patched or fails over, the downtime is not noticeable if you employ retry logic in your app. Azure SQL Database można szybko odzyskać nawet w najbardziej krytycznych okolicznościach, dzięki czemu dane są zawsze dostępne.Azure SQL Database can quickly recover even in the most critical circumstances ensuring that your data is always available.

Rozwiązanie wysokiej dostępności zostało zaprojektowane z myślą o zapewnieniu, że przekazane dane nigdy nie zostaną utracone z powodu niepowodzeń, że operacje konserwacji nie wpłyną na obciążenie, a baza danych nie będzie single point of failure w architekturze oprogramowania.The high availability solution is designed to ensure that committed data is never lost due to failures, that maintenance operations do not affect your workload, and that the database will not be a single point of failure in your software architecture. Nie ma okien obsługi ani przestojów, które powinny wymagać zatrzymania obciążenia, gdy baza danych jest uaktualniana lub utrzymywana.There are no maintenance windows or downtimes that should require you to stop the workload while the database is upgraded or maintained.

Istnieją dwa modele architektoniczne wysokiej dostępności, które są używane w Azure SQL Database:There are two high-availability architectural models that are used in Azure SQL Database:

  • Standardowy model dostępności oparty na rozdzieleniu zasobów obliczeniowych i magazynu.Standard availability model that is based on a separation of compute and storage. Zależy to od wysokiej dostępności i niezawodności zdalnej warstwy magazynowania.It relies on high availability and reliability of the remote storage tier. Ta architektura ukierunkowana na aplikacje biznesowe zorientowane na budżet, które mogą tolerować spadek wydajności podczas aktywności konserwacyjnej.This architecture targets budget-oriented business applications that can tolerate some performance degradation during maintenance activities.
  • Model dostępności Premium oparty na klastrze procesów aparatu bazy danych.Premium availability model that is based on a cluster of database engine processes. Opiera się to na faktach, że zawsze jest kworum dostępnych węzłów aparatu bazy danych.It relies on the fact that there is always a quorum of available database engine nodes. Ta architektura ukierunkowana na aplikacje o znaczeniu strategicznym o wysokiej wydajności operacji we/wy, wysoka liczba transakcji i gwarantuje minimalny wpływ na wydajność podczas aktywności konserwacyjnej.This architecture targets mission critical applications with high IO performance, high transaction rate and guarantees minimal performance impact to your workload during maintenance activities.

Azure SQL Database jest uruchamiany w najnowszej stabilnej wersji aparatu bazy danych SQL Server i systemu operacyjnego Windows, a większość użytkowników nie zauważy, że uaktualnienia są wykonywane w sposób ciągły.Azure SQL Database runs on the latest stable version of SQL Server Database Engine and Windows OS, and most users would not notice that upgrades are performed continuously.

Dostępność warstwy usługi Basic, standard i Ogólnego przeznaczeniaBasic, Standard, and General Purpose service tier availability

Te warstwy usług wykorzystują standardową architekturę dostępności.These service tiers leverage the standard availability architecture. Poniższy rysunek przedstawia cztery różne węzły z oddzielnymi warstwami obliczeniowymi i magazynowymi.The following figure shows four different nodes with the separated compute and storage layers.

Rozdzielenie zasobów obliczeniowych i magazynu

Standardowy model dostępności obejmuje dwie warstwy:The standard availability model includes two layers:

  • Warstwa obliczeń bezstanowych, która uruchamia proces sqlservr.exe i zawiera tylko dane przejściowe i buforowane, takie jak TempDB, modeluje bazy danych na dołączonym dysku SSD, oraz pamięć podręczną planu, pulę buforów i pulę magazynu kolumn w pamięci.A stateless compute layer that runs the sqlservr.exe process and contains only transient and cached data, such as TempDB, model databases on the attached SSD, and plan cache, buffer pool, and columnstore pool in memory. Ten bezstanowy węzeł jest obsługiwany przez usługę Azure Service Fabric, która inicjuje sqlservr.exe, steruje kondycją węzła i wykonuje przejście w tryb failover do innego węzła w razie potrzeby.This stateless node is operated by Azure Service Fabric that initializes sqlservr.exe, controls health of the node, and performs failover to another node if necessary.
  • Warstwa danych stanowych z plikami bazy danych (. mdf/. ldf), które są przechowywane w usłudze Azure Blob Storage.A stateful data layer with the database files (.mdf/.ldf) that are stored in Azure Blob storage. Usługa Azure Blob Storage ma wbudowaną funkcję dostępności i nadmiarowości danych.Azure blob storage has built-in data availability and redundancy feature. Gwarantuje, że każdy rekord w pliku dziennika lub stronie w pliku danych zostanie zachowany nawet w przypadku awarii procesu SQL Server.It guarantees that every record in the log file or page in the data file will be preserved even if SQL Server process crashes.

Za każdym razem, gdy aparat bazy danych lub system operacyjny zostanie uaktualniony lub zostanie wykryta awaria, usługa Azure Service Fabric przeniesie bezstanowy proces SQL Server do innego bezstanowego węzła obliczeniowego z wystarczającą ilością wolnego miejsca.Whenever the database engine or the operating system is upgraded, or a failure is detected, Azure Service Fabric will move the stateless SQL Server process to another stateless compute node with sufficient free capacity. Przeniesienie nie ma wpływ na dane w usłudze Azure Blob Storage, a pliki danych/dziennika są dołączone do nowo zainicjowanego procesu SQL Server.Data in Azure Blob storage is not affected by the move, and the data/log files are attached to the newly initialized SQL Server process. Ten proces gwarantuje dostępność na 99,99%, ale duże obciążenie może napotkać spadek wydajności podczas przejścia, ponieważ nowe wystąpienie SQL Server rozpoczyna się od zimnej pamięci podręcznej.This process guarantees 99.99% availability, but a heavy workload may experience some performance degradation during the transition since the new SQL Server instance starts with cold cache.

Dostępność warstwy usług premium i Krytyczne dla działania firmyPremium and Business Critical service tier availability

Warstwy usług premium i Krytyczne dla działania firmy korzystają z modelu dostępności Premium, który integruje zasoby obliczeniowe (proces SQL Server Database Engine) i magazyn (lokalnie dołączony dysk SSD) w jednym węźle.Premium and Business Critical service tiers leverage the Premium availability model, which integrates compute resources (SQL Server Database Engine process) and storage (locally attached SSD) on a single node. Wysoka dostępność jest osiągana przez replikowanie zarówno zasobów obliczeniowych, jak i magazynu do dodatkowych węzłów tworzących klaster z trzema czterema węzłami.High availability is achieved by replicating both compute and storage to additional nodes creating a three to four-node cluster.

Klaster węzłów aparatu bazy danych

Bazowe pliki bazy danych (. mdf/. ldf) są umieszczane w podłączonym magazynie SSD w celu zapewnienia bardzo małych opóźnień we/wy dla obciążenia.The underlying database files (.mdf/.ldf) are placed on the attached SSD storage to provide very low latency IO to your workload. Wysoka dostępność jest implementowana przy użyciu technologii podobnego do SQL Server zawsze włączonymi grupami dostępności.High availability is implemented using a technology similar to SQL Server Always On Availability Groups. Klaster zawiera pojedynczą replikę podstawową (proces SQL Server), która jest dostępna do obsługi obciążeń klientów odczytu i zapisu, a także do trzech replik pomocniczych (obliczeniowych i magazynowych) zawierających kopie danych.The cluster includes a single primary replica (SQL Server process) that is accessible for read-write customer workloads, and up to three secondary replicas (compute and storage) containing copies of data. Węzeł podstawowy ciągle przekazuje zmiany do węzłów pomocniczych w kolejności i gwarantuje, że dane są synchronizowane z co najmniej jedną repliką pomocniczą przed zatwierdzeniem każdej transakcji.The primary node constantly pushes changes to the secondary nodes in order and ensures that the data is synchronized to at least one secondary replica before committing each transaction. Ten proces gwarantuje, że jeśli węzeł podstawowy ulegnie awarii z jakiegokolwiek powodu, zawsze jest w pełni zsynchronizowany węzeł w celu przełączenia w tryb failover.This process guarantees that if the primary node crashes for any reason, there is always a fully synchronized node to fail over to. Przełączenie w tryb failover jest inicjowane przez Service Fabric platformy Azure.The failover is initiated by the Azure Service Fabric. Gdy replika pomocnicza zostanie nowym węzłem podstawowym, zostanie utworzona inna replika pomocnicza, aby upewnić się, że klaster ma wystarczającą liczbę węzłów (zestaw kworum).Once the secondary replica becomes the new primary node, another secondary replica is created to ensure the cluster has enough nodes (quorum set). Po zakończeniu pracy w trybie failover połączenia SQL są automatycznie przekierowywane do nowego węzła podstawowego.Once failover is complete, SQL connections are automatically redirected to the new primary node.

Dodatkowo model dostępności Premium umożliwia przekierowywanie połączeń SQL tylko do odczytu do jednej z replik pomocniczych.As an extra benefit, the premium availability model includes the ability to redirect read-only SQL connections to one of the secondary replicas. Ta funkcja jest nazywana skalowaniem do odczytu. Zapewnia 100% dodatkowej pojemności obliczeniowej bez dodatkowej opłaty za magazyn operacji tylko do odczytu, na przykład obciążenia analityczne, z repliki podstawowej.This feature is called Read Scale-Out. It provides 100% additional compute capacity at no extra charge to off-load read-only operations, such as analytical workloads, from the primary replica.

Dostępność warstwy usługi w ramach skalowaniaHyperscale service tier availability

Architektura warstwy usług w ramach skalowania jest opisana w temacie Architektura funkcji rozproszonych.The Hyperscale service tier architecture is described in Distributed functions architecture.

Skalowalna architektura funkcjonalna

Model dostępności w obszarze skalowanie obejmuje cztery warstwy:The availability model in Hyperscale includes four layers:

  • Bezstanowa warstwa obliczeniowa, która uruchamia procesy sqlservr.exe i zawiera tylko dane przejściowe i buforowane, takie jak nieobejmujący pamięci podręcznej RBPEX, TempDB, Modeling Database itp. na dołączonym dysku SSD, i planowanie pamięci podręcznej, puli buforów i puli magazynu kolumn w pamięci.A stateless compute layer that runs the sqlservr.exe processes and contains only transient and cached data, such as non-covering RBPEX cache, TempDB, model database, etc. on the attached SSD, and plan cache, buffer pool, and columnstore pool in memory. Ta warstwa bezstanowa obejmuje podstawową replikę obliczeniową i opcjonalnie wiele pomocniczych replik obliczeniowych, które mogą być używane jako obiekty docelowe trybu failover.This stateless layer includes the primary compute replica and optionally a number of secondary compute replicas that can serve as failover targets.
  • Bezstanowa warstwa magazynowania utworzona przez serwery stronicowania.A stateless storage layer formed by page servers. Ta warstwa jest aparatem magazynu rozproszonego dla procesów sqlservr.exe uruchomionych w replikach obliczeniowych.This layer is the distributed storage engine for the sqlservr.exe processes running on the compute replicas. Każdy serwer stron zawiera tylko dane przejściowe i buforowane, takie jak m.in. pamięć podręczna RBPEX na podłączonym dysku SSD, a strony danych w pamięci podręcznej.Each page server contains only transient and cached data, such as covering RBPEX cache on the attached SSD, and data pages cached in memory. Każdy serwer stron ma sparowany serwer stronicowania w konfiguracji aktywne-aktywne, aby zapewnić Równoważenie obciążenia, nadmiarowość i wysoką dostępność.Each page server has a paired page server in an active-active configuration to provide load balancing, redundancy, and high availability.
  • Warstwa magazynu dziennika transakcji stanowych utworzona przez węzeł obliczeniowy, na którym działa proces usługi log, strefa przeładunku dziennika transakcji oraz magazyn długoterminowy dziennika transakcji.A stateful transaction log storage layer formed by the compute node running the Log service process, the transaction log landing zone, and transaction log long term storage. Strefa docelowa i długoterminowy magazyn używają usługi Azure Storage, która zapewnia dostępność i nadmiarowość dla dziennika transakcji, zapewniając trwałość danych dla zatwierdzonych transakcji.Landing zone and long term storage use Azure Storage, which provides availability and redundancy for transaction log, ensuring data durability for committed transactions.
  • Stanowa warstwa magazynowania danych z plikami bazy danych (. mdf/. NDF), które są przechowywane w usłudze Azure Storage i są aktualizowane przez serwery stronicowania.A stateful data storage layer with the database files (.mdf/.ndf) that are stored in Azure Storage and are updated by page servers. Ta warstwa używa funkcji dostępności i nadmiarowości danych usługi Azure Storage.This layer uses data availability and redundancy features of Azure Storage. Gwarantuje to, że każda Strona w pliku danych zostanie zachowana, nawet jeśli procesy w innych warstwach uległy awarii architektury ze skalą lub w przypadku awarii węzłów obliczeniowych.It guarantees that every page in a data file will be preserved even if processes in other layers of Hyperscale architecture crash, or if compute nodes fail.

Węzły obliczeniowe we wszystkich warstwach skalowania są uruchamiane na platformie Azure Service Fabric, która kontroluje kondycję każdego węzła i wykonuje przejścia w tryb failover do dostępnych węzłów w dobrej kondycji.Compute nodes in all Hyperscale layers run on Azure Service Fabric, which controls health of each node and performs failovers to available healthy nodes as necessary.

Aby uzyskać więcej informacji na temat wysokiej dostępności w ramach skalowania, zobacz wysoka dostępność bazy danych w ramach skalowania.For more information on high availability in Hyperscale, see Database High Availability in Hyperscale.

Konfiguracja nadmiarowa strefZone redundant configuration

Domyślnie klaster węzłów dla modelu dostępności Premium jest tworzony w tym samym centrum danych.By default, the cluster of nodes for the premium availability model is created in the same datacenter. Wprowadzając strefy dostępności platformy Azure, SQL Database mogą umieścić różne repliki bazy danych krytyczne dla działania firmy w różnych strefach dostępności w tym samym regionie.With the introduction of Azure Availability Zones, SQL Database can place different replicas of the Business Critical database to different availability zones in the same region. Aby wyeliminować single point of failure, pierścień kontrolny jest również duplikowany w wielu strefach jako trzy pierścienie bramy (GW).To eliminate a single point of failure, the control ring is also duplicated across multiple zones as three gateway rings (GW). Routing do określonego pierścienia bramy jest kontrolowany przez usługę Azure Traffic Manager (ATM).The routing to a specific gateway ring is controlled by Azure Traffic Manager (ATM). Ponieważ konfiguracja nadmiarowa strefy w warstwach usług premium lub Krytyczne dla działania firmy nie powoduje utworzenia dodatkowej nadmiarowości bazy danych, możesz ją włączyć bez dodatkowych kosztów.Because the zone redundant configuration in the Premium or Business Critical service tiers does not create additional database redundancy, you can enable it at no extra cost. Wybierając strefowo nadmiarową konfigurację, można sprawić, aby bazy danych Premium lub Krytyczne dla działania firmy odporne na znacznie większy zestaw błędów, w tym katastrofalne przerwy w działaniu, bez wprowadzania żadnych zmian w logice aplikacji.By selecting a zone redundant configuration, you can make your Premium or Business Critical databases resilient to a much larger set of failures, including catastrophic datacenter outages, without any changes to the application logic. Istnieje również możliwość przekonwertowania wszelkich istniejących baz danych lub pul w warstwie Premium lub Krytyczne dla działania firmy na strefę nadmiarową.You can also convert any existing Premium or Business Critical databases or pools to the zone redundant configuration.

Ze względu na to, że nadmiarowe bazy danych strefy mają repliki w różnych centrach, z odległości między nimi, zwiększone opóźnienie sieci może wydłużyć czas zatwierdzania i w ten sposób mieć wpływ na wydajność niektórych obciążeń OLTP.Because the zone redundant databases have replicas in different datacenters with some distance between them, the increased network latency may increase the commit time and thus impact the performance of some OLTP workloads. Zawsze możesz wrócić do konfiguracji pojedynczej strefy, wyłączając ustawienie nadmiarowości strefy.You can always return to the single-zone configuration by disabling the zone redundancy setting. Ten proces jest operacją online podobną do zwykłego uaktualnienia warstwy usług.This process is an online operation similar to the regular service tier upgrade. Na końcu procesu baza danych lub Pula jest migrowana ze strefy nadmiarowego pierścień do pojedynczego pierścienia strefy lub odwrotnie.At the end of the process, the database or pool is migrated from a zone redundant ring to a single zone ring or vice versa.

Ważne

Nadmiarowe bazy danych stref i pule elastyczne są obecnie obsługiwane tylko w warstwach usług premium i Krytyczne dla działania firmy w wybranych regionach.Zone redundant databases and elastic pools are currently only supported in the Premium and Business Critical service tiers in select regions. W przypadku korzystania z warstwy Krytyczne dla działania firmy konfiguracja nadmiarowa strefy jest dostępna tylko po wybraniu sprzętu obliczeniowego 5 rdzeń.When using the Business Critical tier, zone redundant configuration is only available when the Gen5 compute hardware is selected. Aby uzyskać aktualne informacje o regionach, które obsługują nadmiarowe bazy danych strefy, zobacz temat Obsługa usług według regionów.For up to date information about the regions that support zone redundant databases, see Services support by region.
Ta funkcja jest niedostępna w wystąpieniu zarządzanym.This feature is not available in Managed instance.

Strefa o wysokiej dostępności nadmiarowa jest zilustrowana na poniższym diagramie:The zone redundant version of the high availability architecture is illustrated by the following diagram:

Strefa architektury wysokiej dostępności nadmiarowa

Szybsze odzyskiwanie bazy danych (ADR)Accelerated Database Recovery (ADR)

Szybsze odzyskiwanie bazy danych (ADR) to nowa funkcja aparatu bazy danych SQL, która znacznie zwiększa dostępność bazy danych, szczególnie w przypadku długotrwałych transakcji.Accelerated Database Recovery (ADR) is a new SQL database engine feature that greatly improves database availability, especially in the presence of long running transactions. Reguły ADR są obecnie dostępne dla pojedynczych baz danych, pul elastycznych i Azure SQL Data Warehouse.ADR is currently available for single databases, elastic pools, and Azure SQL Data Warehouse.

Testowanie odporności błędów aplikacjiTesting application fault resiliency

Wysoka dostępność to podstawowa część platformy Azure SQL Database, która działa w sposób przezroczysty dla aplikacji bazy danych.High availability is a fundamental part of Azure SQL Database platform that works transparently for your database application. Jednak firma Microsoft rozpoznaje, że można testować, w jaki sposób automatyczne operacje trybu failover inicjowane podczas planowanych lub nieplanowanych zdarzeń byłyby wpływać na aplikację przed wdrożeniem jej w środowisku produkcyjnym.However, we recognize that you may want to test how the automatic failover operations initiated during planned or unplanned events would impact the application before you deploy it to production. Można wywołać specjalny interfejs API w celu ponownego uruchomienia bazy danych lub puli elastycznej, która spowoduje wyzwolenie pracy w trybie failover.You can call a special API to restart a database or an elastic pool, which will in turn trigger a failover. W przypadku strefowo nadmiarowej bazy danych lub puli elastycznej wywołanie interfejsu API spowoduje przekierowanie połączeń klientów do nowego elementu podstawowego w strefie dostępności innej niż strefa dostępności starego elementu podstawowego.In the case of a zone redundant database or elastic pool, the API call would result in redirecting client connections to the new primary in an Availability Zone different from the Availability Zone of the old primary. W związku z tym oprócz testowania pracy w trybie failover wpływa na istniejące sesje baz danych, można również sprawdzić, czy zmienia ona kompleksową wydajność ze względu na zmiany opóźnienia sieci.So in addition to testing how failover impacts existing database sessions, you can also verify if it changes the end-to-end performance due to changes in network latency. Ponieważ operacja ponownego uruchomienia jest niepożądana, a duża liczba z nich może nałożyć na platformę, tylko jedno wywołanie trybu failover jest dozwolone co 30 minut dla każdej bazy danych lub puli elastycznej.Because the restart operation is intrusive and a large number of them could stress the platform, only one failover call is allowed every 30 minutes for each database or elastic pool.

Przejście w tryb failover można zainicjować za pomocą interfejsu API REST lub programu PowerShell.A failover can be initiated using REST API or PowerShell. W przypadku interfejsu API REST zobacz tryb failover bazy danych i tryb failover puli elastycznej.For REST API, see Database failover and Elastic pool failover. W przypadku programu PowerShell zobacz Invoke-AzSqlDatabaseFailover i Invoke-AzSqlElasticPoolFailover.For PowerShell, see Invoke-AzSqlDatabaseFailover and Invoke-AzSqlElasticPoolFailover. Wywołania interfejsu API REST można także wykonywać z interfejsu wiersza polecenia platformy Azure przy użyciu poleceń AZ REST .The REST API calls can also be made from Azure CLI using az rest command.

Ważne

Polecenie przełączenia w tryb failover nie jest obecnie dostępne w warstwie usługi i w przypadku wystąpienia zarządzanego.The Failover command is currently not available in the Hyperscale service tier and for Managed Instance.

PodsumowanieConclusion

Azure SQL Database funkcje wbudowanego rozwiązania wysokiej dostępności, które jest głęboko zintegrowane z platformą Azure.Azure SQL Database features a built-in high availability solution, that is deeply integrated with the Azure platform. Jest ona zależna od Service Fabric do wykrywania awarii i odzyskiwania, w usłudze Azure Blob Storage na potrzeby ochrony danych, a na Strefy dostępności w celu uzyskania większej odporności na uszkodzenia.It is dependent on Service Fabric for failure detection and recovery, on Azure Blob storage for data protection, and on Availability Zones for higher fault tolerance. Ponadto usługa Azure SQL Database korzysta z technologii Always On Availability Group w SQL Server na potrzeby replikacji i przełączania do trybu failover.In addition, Azure SQL database leverages the Always On Availability Group technology from SQL Server for replication and failover. Połączenie tych technologii pozwala aplikacjom w pełni wykorzystać zalety modelu magazynu mieszanego i obsługiwać najbardziej wymaganą umowy SLA.The combination of these technologies enables applications to fully realize the benefits of a mixed storage model and support the most demanding SLAs.

Następne krokiNext steps