Published on

October 31, 2018

Исправление ожидания HADR_AR_CRITICAL_SECTION_ENTRY в SQL Server

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

Давайте рассмотрим реальный сценарий, в котором возникло это ожидание, и изучим решение для его исправления.

Ситуация

Клиент использовал SQL Server в виртуальной среде. Из-за нестабильности сетевой инфраструктуры кластер Windows потерял кворум на несколько минут, прежде чем восстановиться. Поскольку группы доступности AlwaysOn тесно связаны с отказоустойчивым кластером серверов Windows, любые проблемы внутри кластера могут повлиять на группу доступности.

В результате этой нестабильности сети клиент столкнулся с проблемой. Он не мог вносить изменения в группу доступности, так как она находилась в несогласованном состоянии, а запросы на модификацию застревали в ожидании HADR_AR_CRITICAL_SECTION_ENTRY.

Причина

Согласно документации Microsoft, ожидание HADR_AR_CRITICAL_SECTION_ENTRY возникает, когда команда Always On DDL или команда кластеризации отказоустойчивого сервера Windows ожидает эксклюзивного чтения/записи доступа к текущему состоянию выполнения локальной реплики связанной группы доступности.

Решение/Обходное решение

После изучения проблемы было обнаружено, что перезапуск экземпляра SQL Server является рекомендуемым решением для устранения ожидания HADR_AR_CRITICAL_SECTION_ENTRY. В данном случае клиент установил ручное переключение отказоустойчивости группы доступности и перезапустил обе реплики. Через несколько минут вторичная реплика синхронизировалась, и им удалось успешно удалить базы данных из группы доступности.

Для проверки правильности работы клиент протестировал переключение вперед и назад, и все операции прошли успешно.

Заключение

Если вы столкнулись с ожиданием HADR_AR_CRITICAL_SECTION_ENTRY в вашей среде SQL Server, рекомендуется перезапустить экземпляр SQL Server. Это ожидание может возникать при проблемах с отказоустойчивым кластером серверов Windows или при выполнении команд Always On DDL.

Вы сталкивались с этим ожиданием в своей среде? Если да, мы хотели бы услышать о причине и о том, как вы ее решили. Пожалуйста, поделитесь своими идеями в комментариях ниже.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.