Basic Availability Groups
Basic Availability Groups — это технология обеспечения высокой доступности и частичного аварийного восстановления для баз данных, реализованная в Microsoft SQL Server, начиная с версии 2016 (в редакции Standard). Она представляет собой упрощённую, функционально ограниченную версию классических групп доступности Always On (Always On Availability Groups), которые доступны только в редакции Enterprise. Basic Availability Groups предназначены для замены устаревшей технологии зеркального отображения баз данных (Database Mirroring), которая была объявлена устаревшей в SQL Server 2012 и полностью удалена в SQL Server 2022.
История и предпосылки появления
До появления Basic Availability Groups, единственным штатным механизмом обеспечения высокой доступности для пользователей редакции SQL Server Standard было зеркальное отображение (Database Mirroring) в режиме высокой безопасности с синхронной передачей данных. Однако у этой технологии был ряд существенных недостатков: она требовала ручного переключения (ручного переноса роли «принципал» на «зеркало»), не поддерживала автоматическое переключение при отказе (только в Enterprise Edition с Witness), и не позволяла использовать несколько реплик (только две копии базы данных). Кроме того, зеркальное отображение не давало возможности создавать читаемые вторичные реплики.
С выпуском SQL Server 2016 корпорация Microsoft представила Basic Availability Groups как часть редакции Standard. Это стало ответом на запрос рынка: многие организации, использующие редакцию Standard, нуждались в простом, надёжном и управляемом решении для отказоустойчивости, которое было бы проще в настройке и эксплуатации, чем зеркальное отображение, и при этом предоставляло бы базовые функции групп доступности.
Архитектура и принцип работы
Basic Availability Groups работают на основе той же инфраструктуры, что и полноценные группы доступности Always On (Always On Availability Groups). Они используют механизм репликации на уровне страниц (page-level replication) и протокол кворума, основанный на кластеризации Windows Server Failover Cluster (WSFC). Однако в отличие от Enterprise-версии, они имеют ряд существенных упрощений.
Ключевые архитектурные ограничения
- Одна база данных на группу: В отличие от групп доступности Enterprise, которые могут содержать несколько баз данных (до 100 в одной группе), Basic Availability Groups поддерживают только одну базу данных на одну группу. Это означает, что для каждой базы данных, требующей защиты, необходимо создавать отдельную группу доступности.
- Две реплики: Группа может содержать только две реплики — первичную (primary) и вторичную (secondary). Невозможно добавить третью или четвёртую реплику для масштабирования чтения или географического резервирования.
- Только синхронный режим фиксации: Basic Availability Groups поддерживают только синхронную фиксацию (synchronous-commit mode). Это означает, что транзакция считается завершённой только после того, как журнал транзакций будет записан как на первичной, так и на вторичной реплике. Асинхронный режим (asynchronous-commit mode), который позволяет снизить задержки за счёт потери части данных при сбое, не поддерживается.
- Нет автоматического переключения при отказе: В отличие от Enterprise-версии, где автоматическое переключение (automatic failover) возможно при наличии синхронной реплики и настроенного кворума, в Basic Availability Groups переключение всегда выполняется вручную (manual failover). Для этого администратор должен инициировать смену роли.
- Нет читаемых вторичных реплик: Вторичная реплика в Basic Availability Groups не может быть использована для обработки запросов на чтение (readable secondary). Она предназначена исключительно для аварийного восстановления.
- Нет поддержки Listener: В отличие от групп доступности Enterprise, которые могут использовать прослушиватель (Listener) для прозрачного перенаправления клиентских подключений, Basic Availability Groups не создают прослушиватель. Для подключения к базе данных после переключения необходимо вручную изменить строку подключения в приложении, указав имя нового сервера.
- Нет поддержки распределённых групп доступности: Basic Availability Groups не могут быть частью распределённой группы доступности (Distributed Availability Group), которая используется для географического резервирования и миграции данных между разными кластерами.
Процесс репликации
- Первичная реплика принимает изменения от приложений и записывает их в журнал транзакций.
- Каждая завершённая транзакция отправляется на вторичную реплику через протокол кворума WSFC.
- Вторичная реплика получает журнал транзакций и применяет его к своей копии базы данных.
- После успешного применения журнала на вторичной реплике, первичная реплика получает подтверждение и фиксирует транзакцию как завершённую.
Преимущества и недостатки
Преимущества
- Простота настройки: Basic Availability Groups значительно проще в настройке и администрировании по сравнению с зеркальным отображением или полноценными группами доступности. Они не требуют сложной конфигурации кластера и могут быть развёрнуты с помощью мастера (Wizard) в SQL Server Management Studio (SSMS) или через Transact-SQL (T-SQL).
- Автоматическое восстановление после сбоя: В отличие от зеркального отображения, Basic Availability Groups автоматически восстанавливают репликацию после временного сбоя сети или перезагрузки сервера. При восстановлении связи вторичная реплика автоматически догоняет первичную.
- Более высокая производительность: Благодаря использованию современной архитектуры Always On, Basic Availability Groups обеспечивают более высокую производительность и меньшую нагрузку на систему по сравнению с зеркальным отображением.
- Поддержка в редакции Standard: Это единственное штатное решение для высокой доступности в редакции SQL Server Standard (начиная с версии 2016), которое поддерживает автоматическое восстановление репликации и ручное переключение.
Недостатки
- Отсутствие автоматического переключения: Ручное переключение требует вмешательства администратора и может привести к простою, если сбой происходит в нерабочее время.
- Ограничение на одну базу данных: Для каждой базы данных требуется отдельная группа доступности, что усложняет управление при большом количестве баз.
- Отсутствие читаемых вторичных реплик: Невозможно разгрузить первичную реплику за счёт обработки запросов на чтение на вторичной.
- Отсутствие прослушивателя: Требуется изменение строк подключения в приложениях при переключении.
- Только синхронная фиксация: Если вторичная реплика недоступна, первичная реплика не сможет завершить транзакции, что может привести к остановке работы приложений. В Enterprise-версии асинхронный режим позволяет продолжать работу даже при потере связи с вторичной репликой.
Сравнение с альтернативными технологиями
| Технология | Редакция SQL Server | Количество реплик | Автоматическое переключение | Читаемые реплики | Сложность |
|---|---|---|---|---|---|
| Basic Availability Groups | Standard (2016+) | 2 (1 первичная, 1 вторичная) | Нет (только ручное) | Нет | Низкая |
| Always On Availability Groups | Enterprise (2012+) | До 9 (1 первичная, до 8 вторичных) | Да (при синхронном режиме) | Да (до 3 вторичных) | Высокая |
| Database Mirroring | Standard / Enterprise (до 2022) | 2 (принципал + зеркало) | Да (только в Enterprise с Witness) | Нет | Средняя |
| Failover Cluster Instance (FCI) | Standard / Enterprise | 2 (активный + пассивный) | Да (автоматически) | Нет (только один активный узел) | Высокая (требуется общее хранилище) |
Применение
Basic Availability Groups находят применение в сценариях, где требуется базовая отказоустойчивость для одной или нескольких баз данных, но нет необходимости в сложной инфраструктуре Enterprise-версии. Типичные случаи использования:
- Защита критически важных, но не самых нагруженных баз данных в организациях среднего размера.
- Миграция с устаревшего зеркального отображения на более современную и поддерживаемую технологию.
- Создание тестовых или резервных копий с возможностью быстрого восстановления при сбое.
- Обеспечение высокой доступности для приложений, которые не требуют автоматического переключения и могут терпеть короткий простой для ручного вмешательства администратора.
Настройка и администрирование
Настройка Basic Availability Groups выполняется через мастер New Availability Group Wizard в SSMS или с помощью команд T-SQL. Основные шаги:
- Создание резервной копии базы данных на первичной реплике.
- Настройка Windows Server Failover Cluster (WSFC) на обоих серверах.
- Создание группы доступности с указанием первичной и вторичной реплик.
- Восстановление базы данных на вторичной реплике в режиме NORECOVERY.
- Присоединение вторичной реплики к группе доступности.
Администрирование включает в себя мониторинг состояния группы, ручное переключение при отказе (с помощью SSMS или T-SQL), а также управление резервными копиями (резервные копии можно создавать как на первичной, так и на вторичной реплике, но только в режиме COPY_ONLY).
Ограничения и критика
Основная критика Basic Availability Groups связана с их ограниченной функциональностью по сравнению с Enterprise-версией. Отсутствие автоматического переключения и читаемых реплик делает их менее привлекательными для высоконагруженных систем и критически важных приложений, где время простоя должно быть минимальным. Кроме того, ограничение на одну базу данных на группу усложняет управление и увеличивает количество объектов, которые необходимо администрировать.
Тем не менее, для многих организаций, использующих редакцию Standard, Basic Availability Groups являются оптимальным решением, предоставляющим достаточный уровень защиты и простоты по сравнению с устаревшим зеркальным отображением. Они позволяют получить базовую отказоустойчивость без необходимости приобретения дорогостоящей лицензии Enterprise.
Будущее технологии
С выпуском SQL Server 2022 корпорация Microsoft подтвердила, что Basic Availability Groups остаются поддерживаемой технологией для редакции Standard. При этом зеркальное отображение было полностью удалено. Таким образом, Basic Availability Groups являются единственным штатным механизмом для обеспечения высокой доступности в этой редакции. В будущем возможно расширение функциональности, например, добавление поддержки асинхронного режима или автоматического переключения, но официальных заявлений от Microsoft на этот счёт не было.
Источники
- Документация Microsoft SQL Server: "Basic Availability Groups (Always On Availability Groups)".
- Документация Microsoft SQL Server: "Differences between Basic Availability Groups and Enterprise Availability Groups".
- Книга "SQL Server 2016: Always On Availability Groups" (Microsoft Press).
- Статья "Basic Availability Groups in SQL Server 2016 Standard Edition" (SQL Shack).
- Блог Microsoft SQL Server Team: "Announcing Basic Availability Groups for SQL Server 2016 Standard Edition".
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →