Высокая доступность и база данных SQL AzureHigh-availability and Azure SQL Database

Цель архитектуры высокого уровня доступности в базе данных SQL Azure — гарантировать, что ваша база данных будет работать в 99,99% времени, не беспокоясь о влиянии операций обслуживания и простоев.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. Azure автоматически обрабатывает критически важные задачи обслуживания, такие как исправления, резервные копии, обновления Windows и SQL, а также незапланированные события, такие как оборудование, программное обеспечение или сбои сети.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. При отправке или отработки отказа базового экземпляра SQL время простоя не заметно, если в приложении используется логика повторных попыток .When the underlying SQL instance is patched or fails over, the downtime is not noticeable if you employ retry logic in your app. Базу данных SQL Azure можно быстро восстановить даже в самых критических обстоятельствах, что гарантирует постоянную доступность ваших данных.Azure SQL Database can quickly recover even in the most critical circumstances ensuring that your data is always available.

Решение высокой доступности предназначено для того, чтобы гарантировать, что зафиксированные данные никогда не будут потеряны из-за сбоев, операции обслуживания не затрагивают рабочую нагрузку и что база данных не будет единственной точкой отказа в архитектуре программного обеспечения.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. Периоды обслуживания и простой, из-за которых нужно остановить рабочую нагрузку во время обновления или обслуживания базы данных, отсутствуют.There are no maintenance windows or downtimes that should require you to stop the workload while the database is upgraded or maintained.

В базе данных SQL Azure есть две архитектурные модели с высоким уровнем доступности:There are two high-availability architectural models that are used in Azure SQL Database:

  • Стандартная модель доступности, основанная на разделении вычислений и хранилища.Standard availability model that is based on a separation of compute and storage. Он полагается на высокий уровень доступности и надежности удаленного уровня хранилища.It relies on high availability and reliability of the remote storage tier. Эта архитектура предназначена для ориентированных на бюджет бизнес-приложений, которые могут допускать снижение производительности во время действий по обслуживанию.This architecture targets budget-oriented business applications that can tolerate some performance degradation during maintenance activities.
  • Модель доступности уровня "Премиум", основанная на кластере процессов ядра СУБД.Premium availability model that is based on a cluster of database engine processes. Это зависит от того факта, что всегда существует кворум доступных узлов ядра СУБД.It relies on the fact that there is always a quorum of available database engine nodes. Эта архитектура предназначена для критически важных приложений с высокой производительностью операций ввода-вывода, высокой частотой транзакций и гарантирует минимального воздействия на производительность рабочей нагрузки во время операций обслуживания.This architecture targets mission critical applications with high IO performance, high transaction rate and guarantees minimal performance impact to your workload during maintenance activities.

База данных SQL Azure работает на последней стабильной версии SQL Server ядро СУБД и ОС Windows, и большинство пользователей не заметят, что обновления выполняются непрерывно.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.

Доступность уровня служб для ценовых категорий "Базовый", "Стандартный" и "Общего назначения"Basic, Standard, and General Purpose service tier availability

Эти уровни служб используют стандартную архитектуру доступности.These service tiers leverage the standard availability architecture. На следующем рисунке показаны четыре разных узла с раздельными уровнями вычислений и хранилища.The following figure shows four different nodes with the separated compute and storage layers.

Разделение уровней вычисления и хранения

Стандартная модель доступности включает два уровня:The standard availability model includes two layers:

  • Уровень вычислений без отслеживания состояния, который запускает процесс sqlservr.exe и содержит только временные и кэшированные данные, такие как TempDB, базы данных моделей на подключенном SSD, а также кэш планов, буферный пул и пул columnstore в памяти.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. Этот узел работает в Azure Service Fabric, который инициализирует sqlservr.exe, управляет работоспособностью узла и при необходимости выполняет отработку отказа на другой узел.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.
  • Уровень данных с отслеживанием состояния с файлами базы данных (MDF/LDF), которые хранятся в хранилище BLOB-объектов Azure.A stateful data layer with the database files (.mdf/.ldf) that are stored in Azure Blob storage. Хранилище BLOB-объектов Azure имеет встроенную возможность обеспечения доступности и избыточности данных.Azure blob storage has built-in data availability and redundancy feature. Гарантируется, что каждая запись в файле журнала или странице в файле данных будет сохранена даже в случае сбоя 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.

При обновлении ядра СУБД или операционной системы или при обнаружении сбоя Azure Service Fabric переместит процесс SQL Server без отслеживания состояния на другой узел вычислений без отслеживания состояния с достаточной свободной емкостью.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. Перемещение не влияет на данные в хранилище BLOB-объектов Azure, а файлы данных и журналов присоединяются к вновь инициализированному 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. Этот процесс гарантирует доступность 99,99%, но при этом большая рабочая нагрузка может вызвать некоторое снижение производительности во время перехода, так как новый экземпляр SQL Server начинается с холодного кэша.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.

Доступность уровня служб ценовых категорий "Премиум" и "Критически важный для бизнеса"Premium and Business Critical service tier availability

Уровни служб "Премиум" и "критически важный для бизнеса" используют модель доступности уровня "Премиум", которая интегрирует ресурсы вычислений (SQL Server ядро СУБД процесс) и хранилище (локально подключен SSD) на одном узле.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. Высокий уровень доступности достигается за счет репликации вычислений и хранилища на дополнительные узлы с созданием кластера из трех и четырех узлов.High availability is achieved by replicating both compute and storage to additional nodes creating a three to four-node cluster.

Кластер узлов ядра СУБД

Файлы базы данных (MDF/LDF) помещаются в подключенное хранилище SSD, чтобы обеспечить очень низкую задержку в рабочей нагрузке.The underlying database files (.mdf/.ldf) are placed on the attached SSD storage to provide very low latency IO to your workload. Высокий уровень доступности реализуется с помощью технологии, подобной SQL Server группам доступности Always on.High availability is implemented using a technology similar to SQL Server Always On Availability Groups. Кластер включает одну первичную реплику (SQL Server процесс), доступную для рабочих нагрузок чтения и записи, а также до трех вторичных реплик (вычислений и хранения), содержащих копии данных.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. Основной узел постоянно передает изменения на вторичные узлы по порядку и гарантирует, что данные синхронизируются по крайней мере с одной вторичной репликой перед фиксацией каждой транзакции.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. Этот процесс гарантирует, что если основной узел аварийно завершает работу по какой-либо причине, всегда существует полностью синхронизированный узел для отработки отказа.This process guarantees that if the primary node crashes for any reason, there is always a fully synchronized node to fail over to. Отработка отказа инициируется Service Fabricом Azure.The failover is initiated by the Azure Service Fabric. После того как вторичная реплика станет новым основным узлом, создается другая вторичная реплика, чтобы убедиться, что кластер имеет достаточное количество узлов (набор кворума).Once the secondary replica becomes the new primary node, another secondary replica is created to ensure the cluster has enough nodes (quorum set). После завершения отработки отказа подключения SQL автоматически перенаправляются на новый первичный узел.Once failover is complete, SQL connections are automatically redirected to the new primary node.

В качестве дополнительного преимущества модель доступности Premium включает возможность перенаправлять подключения SQL только для чтения на одну из вторичных реплик.As an extra benefit, the premium availability model includes the ability to redirect read-only SQL connections to one of the secondary replicas. Эта функция называется горизонтальным масштабированием для чтения. Она предоставляет 100% дополнительной мощности вычислений без дополнительной платы, чтобы отключить загрузку операций только для чтения, таких как аналитические рабочие нагрузки, из первичной реплики.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.

Доступность уровня службы "линейка"Hyperscale service tier availability

Архитектура уровня службы "масштабирование" описана в статье Архитектура распределенных функций.The Hyperscale service tier architecture is described in Distributed functions architecture.

Функциональная архитектура с масштабированием

Модель доступности в масштабировании включает четыре слоя:The availability model in Hyperscale includes four layers:

  • Уровень вычислений без отслеживания состояния, выполняющий процессы sqlservr.exe и содержащий только временные и кэшированные данные, например неохватывающий кэш RBPEX, TempDB, базу данных model и т. д. на подключенном SSD, а также кэш планов, буферный пул и пул columnstore в памяти.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. Этот уровень без отслеживания состояния включает основную реплику вычислений и, при необходимости, ряд вторичных реплик, которые могут использоваться в качестве целевых объектов отработки отказа.This stateless layer includes the primary compute replica and optionally a number of secondary compute replicas that can serve as failover targets.
  • Уровень хранилища без отслеживания состояния, сформированный серверами страниц.A stateless storage layer formed by page servers. Этот уровень является механизмом распределенного хранилища для процессов sqlservr.exe, выполняющихся в репликах вычислений.This layer is the distributed storage engine for the sqlservr.exe processes running on the compute replicas. Каждый сервер страниц содержит только временные и кэшированные данные, например, охватывающий кэш RBPEX на подключенном SSD-накопителе и страницы данных, кэшированные в памяти.Each page server contains only transient and cached data, such as covering RBPEX cache on the attached SSD, and data pages cached in memory. На каждом сервере страниц имеется парный сервер страниц в конфигурации "активный — активный", обеспечивающий балансировку нагрузки, избыточность и высокий уровень доступности.Each page server has a paired page server in an active-active configuration to provide load balancing, redundancy, and high availability.
  • Уровень хранения журнала транзакций с отслеживанием состояния, сформированный узлом вычислений, на котором выполняется процесс службы журнала, зона размещения журнала транзакций и долгосрочное хранение журнала транзакций.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. Целевая зона и долгосрочное хранение используют службу хранилища Azure, которая обеспечивает доступность и избыточность для журнала транзакций, гарантируя устойчивость данных для зафиксированных транзакций.Landing zone and long term storage use Azure Storage, which provides availability and redundancy for transaction log, ensuring data durability for committed transactions.
  • Уровень хранилища данных с отслеживанием состояния с файлами базы данных (MDF/NDF), которые хранятся в службе хранилища Azure и обновляются серверами страниц.A stateful data storage layer with the database files (.mdf/.ndf) that are stored in Azure Storage and are updated by page servers. Этот уровень использует функции доступности и избыточности данных в службе хранилища Azure.This layer uses data availability and redundancy features of Azure Storage. Гарантируется, что каждая страница в файле данных будет сохранена даже в том случае, если процессы на других уровнях сбоя в архитектуре пройдут сбой или если произошел сбой в работе узлов вычислений.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.

На всех уровнях масштабирования выполняются узлы, работающие на Service Fabric Azure, которые позволяют управлять работоспособностью каждого узла и при необходимости выполнять отработку отказа на доступные работоспособные узлы.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.

Дополнительные сведения о высокой доступности в масштабировании см. в статье высокая доступность базы данных в масштабах.For more information on high availability in Hyperscale, see Database High Availability in Hyperscale.

Конфигурация с избыточностью в пределах зоныZone redundant configuration

По умолчанию кластер узлов для модели доступности уровня "Премиум" создается в одном центре обработки данных.By default, the cluster of nodes for the premium availability model is created in the same datacenter. С появлением зоны доступности Azureбаза данных SQL может разместить разные реплики базы данных критически важный для бизнеса в разных зонах доступности в одном регионе.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. Чтобы исключить единую точку сбоя, круг управления также дублируется в нескольких зонах в виде трех кругов шлюзов.To eliminate a single point of failure, the control ring is also duplicated across multiple zones as three gateway rings (GW). Маршрутизацией для конкретного круга шлюза управляет диспетчер трафика Azure (ATM).The routing to a specific gateway ring is controlled by Azure Traffic Manager (ATM). Так как конфигурация избыточности в зонах на уровнях "Премиум" или "критически важный для бизнеса" не создает дополнительную избыточность базы данных, ее можно включить без дополнительных затрат.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. Выбрав конфигурацию с избыточностью зоны, можно сделать базы данных уровня "Премиум" или "критически важный для бизнеса" устойчивыми к большому набору сбоев, включая разрушительные простои центра обработки данных, без каких-либо изменений в логике приложения.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. Можно также преобразовать любые существующие базы данных или пулы уровня "Премиум" или "Критически важный для бизнеса" в конфигурацию с избыточностью в пределах зоны.You can also convert any existing Premium or Business Critical databases or pools to the zone redundant configuration.

Поскольку базы данных, избыточные в пределах зоны, имеют реплики в разных центрах обработки с определенным расстоянием между ними, увеличенная задержка сети может увеличить время фиксации и, таким же, повлиять на производительность некоторых рабочих нагрузок 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. Вы всегда можете вернуться к конфигурации с одной зоной, отключив параметр избыточности в пределах зоны.You can always return to the single-zone configuration by disabling the zone redundancy setting. Этот процесс представляет собой оперативную операцию, аналогичную регулярному обновлению уровня служб.This process is an online operation similar to the regular service tier upgrade. В конце этого процесса база данных или пул переносится из круга с избыточностью в пределах зоны в круг с одной зоной, или наоборот.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.

Важно!

В настоящее время избыточные базы данных и пулы эластичных БД поддерживаются только на уровнях служб "Премиум" и "критически важный для бизнеса" в области выбора.Zone redundant databases and elastic pools are currently only supported in the Premium and Business Critical service tiers in select regions. При использовании уровня критически важный для бизнеса конфигурация с избыточностью зоны доступна только при выборе оборудования для вычислений го поколения.When using the Business Critical tier, zone redundant configuration is only available when the Gen5 compute hardware is selected. Актуальные сведения о регионах, поддерживающих избыточные базы данных в пределах зоны, см. в разделе Поддержка служб по регионам.For up to date information about the regions that support zone redundant databases, see Services support by region.
Эта функция недоступна в управляемом экземпляре.This feature is not available in Managed instance.

На следующей схеме показана версия архитектуры с высоким уровнем доступности и избыточностью в пределах зоны.The zone redundant version of the high availability architecture is illustrated by the following diagram:

Архитектура с высоким уровнем доступности и избыточностью в пределах зоны

Ускоренное восстановление базы данных (ADR)Accelerated Database Recovery (ADR)

Ускоренное восстановление базы данных (ADR) — это новая функция ядра СУБД SQL, которая значительно улучшает доступность базы данных, особенно при наличии длительных транзакций.Accelerated Database Recovery (ADR) is a new SQL database engine feature that greatly improves database availability, especially in the presence of long running transactions. В настоящее время функция ADR доступна для отдельных баз данных, эластичных пулов и Хранилища данных SQL Azure.ADR is currently available for single databases, elastic pools, and Azure SQL Data Warehouse.

Тестирование отказоустойчивости приложенияTesting application fault resiliency

Высокий уровень доступности — это фундаментальная часть платформы базы данных SQL Azure, которая прозрачно работает для приложения базы данных.High availability is a fundamental part of Azure SQL Database platform that works transparently for your database application. Однако мы понимаем, что вам может потребоваться проверить, как операции автоматического перехода на другой ресурс, инициированные во время запланированных или незапланированных событий, повлияют на приложение перед развертыванием в рабочей среде.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. Можно вызвать специальный API для перезапуска базы данных или эластичного пула, который, в свою очередь, активирует отработку отказа.You can call a special API to restart a database or an elastic pool, which will in turn trigger a failover. В случае избыточной зоны или эластичного пула, вызов API приведет к перенаправлению клиентских подключений к новой базе данных-источнику в зоне доступности, отличной от зоны доступности старой первичной реплики.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. Таким образом, помимо проверки того, как отработка отказа влияет на существующие сеансы базы данных, можно также проверить, изменяются ли они в результате изменений задержки в сети.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. Так как операция перезапуска является неуправляемой, и большое количество таких ресурсов может привести к нагрузке на платформу, только один вызов отработки отказа разрешается каждые 30 минут для каждой базы данных или эластичного пула.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.

Отработку отказа можно инициировать с помощью REST API или PowerShell.A failover can be initiated using REST API or PowerShell. Дополнительные REST API см. в разделе отработка отказа базы данных и отказоустойчивый пул.For REST API, see Database failover and Elastic pool failover. Для PowerShell см. раздел Invoke-азсклдатабасефаиловер и Invoke-азсклеластикпулфаиловер.For PowerShell, see Invoke-AzSqlDatabaseFailover and Invoke-AzSqlElasticPoolFailover. REST API вызовы можно также сделать из Azure CLI с помощью команды AZ RESTful .The REST API calls can also be made from Azure CLI using az rest command.

Важно!

В настоящее время команда отработки отказа недоступна на уровне службы "масштабирование" и для Управляемый экземпляр.The Failover command is currently not available in the Hyperscale service tier and for Managed Instance.

ЗаключениеConclusion

База данных SQL Azure включает встроенное решение высокого уровня доступности, которое тесно интегрировано с платформой Azure.Azure SQL Database features a built-in high availability solution, that is deeply integrated with the Azure platform. Это зависит от Service Fabric для обнаружения сбоев и восстановления, в хранилище BLOB-объектов Azure для защиты данных, а также на Зоны доступности для повышения отказоустойчивости.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. Кроме того, база данных SQL Azure использует технологию группы доступности Always On из SQL Server для репликации и отработки отказа.In addition, Azure SQL database leverages the Always On Availability Group technology from SQL Server for replication and failover. Сочетание этих технологий позволяет приложениям полностью реализовать преимущества модели смешанного хранения и поддерживать наиболее ресурсоемкие соглашения об уровне обслуживания.The combination of these technologies enables applications to fully realize the benefits of a mixed storage model and support the most demanding SLAs.

Дальнейшие действияNext steps