Включение улучшенной отработки отказа для базы данных в группе доступности Always On

Область применения:SQL Server

В SQL Server 2012 и 2014 в случае, если база данных, участвующая в группе доступности в первичной реплике, теряет возможность записывать транзакции, она не сможет запустить отработку отказа, даже если реплики синхронизированы и настроены на автоматическую отработку отказа.

SQL Server 2016 вводит новую опцию под названием улучшенное переключение на резервную базу данных, которую можно настроить либо с помощью мастера, либо с использованием Transact-SQL. Если этот параметр включен, а автоматическая отработка отказа настроена, то в случае, если одна из баз данных, участвующих в группе доступности, теряет возможность записи транзакций, это приведет к отработке отказа с переходом на синхронизированную вторичную реплику.

Ситуация 1

Группа доступности настраивается между экземпляром А и экземпляром В, содержащим только одну базу данных с именем DB1. Файл данных DB1 находится на диске E, а его журнал транзакций — на диске F. Режим доступности установлен как синхронная фиксация с автоматическим переходом на резервный. Возможность расширенного отказоустойчивого переключения базы данных настроена в группе доступности. В настоящее время обе реплики находятся в синхронизированном состоянии. Проблема приводит к сбою диска E. Этот сценарий не вызовет улучшенный механизм переключения базы данных, поскольку диск E не содержит журнала транзакций.

В описанном сценарии, если ошибка 823 возникает 4 раза подряд при включенной опции отработки отказа базы данных, SQL Server уведомит отказоустойчивый кластер Windows о необходимости предпринять соответствующие действия на основе политики отработки отказа роли группы доступности (AG Role). Это можно настроить так, чтобы выполнялось либо отработка отказа, либо перезапуск ресурсов.

Сценарий 2

В данном случае используется такая же конфигурации группы доступности, как и в сценарии 1. Однако в данном случае вместо диска Е сбой возникает на диске F, где хранится журнал транзакций. Это приведет к инициации резервного переключения, так как соответствует условиям улучшенного резервного переключения базы данных: журнал транзакций недоступен, что означает, что база данных не может записывать транзакции.

Сценарий 3

Группа доступности настраивается между экземпляром А и экземпляром В, содержащим две базы данных с именами DB1 и DB2. Режим доступности установлен на синхронное подтверждение с автоматическим режимом переключения, и включена улучшенная отработка отказов базы данных. Доступ к диску, содержащему данные DB2 и файлы журнала транзакций, будет утерян. При обнаружении проблемы группа доступности будет автоматически переключена на экземпляр сервера B.

Настройка расширенного переключения при отказе

Повышенную отказоустойчивость базы данных можно настроить с помощью SQL Server Management Studio или Transact-SQL. Командлеты PowerShell на данный момент не обладают такой способностью. По умолчанию улучшенное резервное переключение базы данных отключено.

SQL Server Management Studio

Улучшенную отработку отказа базы данных можно включить при создании группы доступности с помощью SQL Server Management Studio. После создания группы доступности включить или отключить эту функцию можно только с использованием Transact-SQL.

Создание группы доступности вручную

Инструкции по созданию группы доступности см. в статье Использование диалогового окна "Создание группы доступности" (SQL Server Management Studio). Чтобы включить улучшенную обработку отказов базы данных, установите соответствующий флажок рядом с опцией Определение исправности на уровне базы данных.

Использование мастера групп доступности

Инструкции см. в статье Использование мастера групп доступности (SQL Server Management Studio). Включить улучшенную отработку отказа базы данных можно в диалогом окне "Укажите имя группы доступности". Для этого установите флажок рядом с пунктом Определение исправности на уровне базы данных.

Transact-SQL

Для настройки поведения улучшенного отказоустойчивого механизма базы данных во время создания группы доступности необходимо установить параметр DB_FAILOVER в значение ON следующим образом:

CREATE AVAILABILITY GROUP [AGNAME]
WITH ( DB_FAILOVER = ON)
...

Чтобы добавить это поведение после настройки группы доступности, используйте команду ALTER AVAILABILITY GROUP:

ALTER AVAILABILITY GROUP [AGNAME] SET (DB_FAILOVER = ON)

Чтобы отключить это поведение, выполните следующую команду ALTER AVAILABILITY GROUP:

ALTER AVAILABILITY GROUP [AGNAME] SET (DB_FAILOVER = OFF)

Динамическое представление управления

Чтобы узнать, включена ли в группе доступности улучшенная поддержка отказоустойчивости базы данных, выполните запрос к динамическому административному представлению sys.availability_groups. Если данная функция отключена, в столбце db_failover будет указано значение 0, а если включена — значение 1.

Следующие шаги