Always On Availability Groups
Always On Availability Groups — это технология обеспечения высокой доступности и аварийного восстановления для Microsoft SQL Server, реализованная на уровне экземпляра базы данных. Она представляет собой решение для создания отказоустойчивых групп баз данных, которые могут быть размещены на нескольких серверах (узлах) в одной или разных географических локациях. Технология впервые была представлена в SQL Server 2012 и с тех пор развивалась, став основным инструментом для обеспечения непрерывности бизнеса в корпоративных средах.
Архитектура и принцип работы
Группа доступности (Availability Group, AG) состоит из набора баз данных, которые реплицируются на несколько экземпляров SQL Server. Один экземпляр выступает в роли первичной реплики (primary replica), которая обслуживает все операции чтения и записи. Остальные экземпляры являются вторичными репликами (secondary replicas), которые поддерживают синхронизированные копии данных.
Роли реплик
- Первичная реплика: принимает все изменения данных (INSERT, UPDATE, DELETE) и отправляет журналы транзакций вторичным репликам.
- Вторичные реплики: получают и применяют журналы транзакций. Они могут быть настроены для обслуживания запросов только на чтение (readable secondary) или оставаться недоступными для пользовательской нагрузки.
Режимы синхронизации
Always On AG поддерживает два режима синхронизации:
- Синхронный режим (Synchronous commit): транзакция фиксируется на первичной реплике только после того, как журнал транзакции записан на диск на вторичной реплике. Это гарантирует нулевую потерю данных (RPO = 0), но увеличивает задержку записи.
- Асинхронный режим (Asynchronous commit): первичная реплика фиксирует транзакцию без ожидания подтверждения от вторичной реплики. Это снижает задержку, но при сбое возможна потеря данных (RPO > 0).
Автоматическое переключение (Failover)
Группа доступности поддерживает автоматическое и ручное переключение. Для автоматического переключения необходимо:
- Наличие синхронного режима хотя бы для одной вторичной реплики.
- Наличие кворума (большинства узлов в кластере Windows Server Failover Cluster, WSFC).
- Настройка политики автоматического переключения (например, при потере связи с первичной репликой).
Ручное переключение возможно как плановое (для обслуживания) так и аварийное (при сбое первичной реплики).
Классификация и типы
По количеству реплик
- Базовая группа доступности (Basic Availability Group): поддерживает только одну базу данных и две реплики (одна первичная, одна вторичная). Введена в SQL Server 2016 Standard Edition. Не поддерживает чтение со вторичной реплики и автоматическое переключение.
- Стандартная группа доступности: поддерживает до 9 реплик (одна первичная и до 8 вторичных) в SQL Server 2019 и более поздних версиях. Доступна в Enterprise Edition.
По географическому расположению
- Локальная группа доступности: все реплики находятся в одном дата-центре.
- Распределённая группа доступности (Distributed Availability Group): реплики расположены в разных дата-центрах или регионах. Используется для аварийного восстановления на больших расстояниях.
По типу реплик
- Читаемые вторичные реплики: позволяют выполнять запросы SELECT на вторичных репликах, снижая нагрузку на первичную.
- Нечитаемые вторичные реплики: используются только для репликации и не обслуживают пользовательские запросы.
Устройство и компоненты
Кластер WSFC
Always On AG требует наличия кластера Windows Server Failover Cluster (WSFC). Кластер обеспечивает кворум, обнаружение сбоев и координацию переключения. Каждый экземпляр SQL Server, участвующий в AG, должен быть узлом кластера.
Прослушиватель (Listener)
Группа доступности использует прослушиватель (Availability Group Listener) — виртуальное сетевое имя (DNS) и IP-адрес, через который клиенты подключаются к первичной реплике. При переключении прослушиватель автоматически перенаправляет трафик на новую первичную реплику, обеспечивая прозрачность для приложений.
Журнал транзакций
Репликация в AG основана на передаче журнала транзакций. Каждая транзакция на первичной реплике записывается в лог, затем блоки лога отправляются вторичным репликам, где они применяются к соответствующим базам данных.
Применение и значение
Обеспечение высокой доступности
Основное применение AG — минимизация времени простоя при сбоях оборудования, программного обеспечения или сети. При отказе первичной реплики система автоматически переключается на одну из вторичных, что обычно занимает от нескольких секунд до нескольких минут.
Аварийное восстановление (Disaster Recovery)
Распределённые группы доступности позволяют создавать реплики в удалённых дата-центрах. В случае катастрофы (пожар, наводнение, отключение электроэнергии) можно переключиться на реплику в другом регионе.
Разгрузка первичной реплики
Читаемые вторичные реплики позволяют выполнять отчёты, аналитические запросы и резервное копирование без нагрузки на основную базу данных. Это особенно полезно в системах с высокой интенсивностью записи.
Плановое обслуживание
С помощью AG можно выполнять обновления SQL Server, установку патчей или замену оборудования без остановки работы приложения — достаточно переключить нагрузку на вторичную реплику.
Примеры использования
Корпоративные ERP-системы
Крупные компании, использующие SAP, 1С:Предприятие или Oracle E-Business Suite на SQL Server, часто разворачивают AG для обеспечения непрерывности работы. Например, в розничной сети с круглосуточными продажами переключение на вторичную реплику позволяет избежать потери выручки.
Финансовый сектор
Банки и биржи требуют нулевой потери данных (RPO = 0). Для них используется синхронный режим с несколькими репликами в одном дата-центре и асинхронная реплика в резервном центре обработки данных (ЦОД).
Облачные решения
Microsoft Azure предлагает управляемые группы доступности как часть службы SQL Managed Instance. Пользователи могут настроить AG с автоматическим переключением между зонами доступности Azure.
Критика и ограничения
Сложность настройки
Развёртывание AG требует глубоких знаний SQL Server, Windows Server, кластеризации и сетевой инфраструктуры. Ошибки в конфигурации могут привести к потере данных или недоступности системы.
Зависимость от кластера WSFC
Кластер WSFC является единой точкой отказа для AG. Если кластер выходит из строя (например, из-за потери кворума), все группы доступности становятся недоступными до восстановления кластера.
Производительность
Синхронный режим увеличивает задержку записи, особенно на больших расстояниях (например, между дата-центрами). Это может быть критично для приложений с высокой интенсивностью транзакций.
Ограничения версий
- Standard Edition поддерживает только Basic AG (одна база данных, две реплики, без чтения со вторичной).
- Enterprise Edition поддерживает все функции, включая распределённые AG и до 9 реплик.
- Express Edition не поддерживает AG.
Сложность мониторинга
Необходимо отслеживать состояние реплик, задержки синхронизации, кворум и производительность. Без специализированных инструментов (например, SQL Server Management Studio, динамических представлений управления) это трудоёмко.
Интересные факты
- Технология Always On AG была разработана как замена устаревшему зеркалированию баз данных (Database Mirroring), которое было объявлено устаревшим в SQL Server 2012.
- В SQL Server 2022 появилась поддержка синхронной репликации с автоматическим переключением для распределённых групп доступности.
- AG может работать в конфигурации мультисайтового кластера (Multi-Site Cluster), где реплики находятся в разных географических точках, но используют единый кластер WSFC.
Источники
- Microsoft Docs: "Always On Availability Groups (SQL Server)" — официальная документация.
- Books Online for SQL Server 2012–2022 — справочные материалы.
- "SQL Server 2019 Always On" by William Assaf, Microsoft Press.
- "Pro SQL Server Always On Availability Groups" by Uttam Parui, Apress.
- Статьи на SQLShack и Brent Ozar Unlimited.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →