Высокая доступность и база данных 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:

  • Уровень вычислений без отслеживания состояния, который запускает sqlserver.exe процесс и содержит только временные и кэшированные данные на подключенном SSD, например tempdb, базу данных model, кэш планов, буферный пул и пул хранилища столбцов.A stateless compute layer that runs the sqlserver.exe process and contains only transient and cached data on the attached SSD, such as TempDB, model database, plan cache, buffer pool and column store pool. Этот узел работает Service Fabric Azure, который инициализирует sqlserver.exe, управляет работоспособностью узла и выполняет отработку отказа на другой узел, если это необходимо.This stateless node is operated by Azure Service Fabric that initializes sqlserver.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.

Конфигурация с избыточностью в пределах зоны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 in the cluster 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.

На следующей схеме показана версия архитектуры с высоким уровнем доступности и избыточностью в пределах зоны.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.

Заключение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