Устранение неполадок с SQL Server Always On

Эта статья поможет устранить распространенные проблемы, связанные с конфигурацией Always On на SQL Server.

Примечание.

Пошаговое руководство по этой статье см. в статье Устранение неполадок SQL Server Always On.

Исходная версия продукта: SQL Server 2012 Корпоративная, SQL Server 2014 Корпоративная, SQL Server 2016 Корпоративная
Оригинальный номер базы знаний: 10179

Важные замечания

Мне нужны указатели на настройку и настройку групп доступности Always On

Если вы ищете документацию по настройке Always On конфигурации, ознакомьтесь со следующими документами:

начало работы с группами доступности Always On (SQL Server). В этом документе содержатся ответы на многие вопросы о группах доступности и настройке. Выполнение всех действий, описанных в этой статье, и изучение предварительных требований, ограничений и рекомендаций для групп доступности Always On (SQL Server) поможет предотвратить множество проблем, с которыми вы можете столкнуться при настройке и обслуживании групп доступности в вашей среде.

Дополнительные ресурсы

Если эти сведения не помогают, см. дополнительные сведения о группах доступности Always On.

Возникли проблемы с настройкой групп доступности Always On

Типичные проблемы конфигурации включают в себя: Always On группы доступности отключены, учетные записи настроены неправильно, конечная точка зеркального отображения базы данных не существует, конечная точка недоступна (ошибка SQL Server 1418), сетевой доступ не существует, а команда присоединения к базе данных завершается сбоем (ошибка SQL Server 35250). Ознакомьтесь со следующим документом для получения справки по устранению этих проблем:

Устранение неполадок с конфигурацией групп доступности Always On (SQL Server)

Дополнительная ссылка: Исправление: ошибка 41009 при попытке создать несколько групп доступности

Если проблема по-прежнему существует, см. дополнительные сведения о группах доступности Always On.

Возникли проблемы с конфигурацией прослушивателя (19471, 19476 и другие ошибки)

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

  • Msg 19471, Level 16, State 0, Line 2Кластику WSFC не удалось подключить ресурс сетевого имени с DNS-именем "" в сети. Dns-имя может быть занято или иметь конфликт с существующими службами имен, или служба кластера WSFC может быть не запущена или недоступна. Используйте другое DNS-имя для разрешения конфликтов имен или проверка журнал кластера WSFC для получения дополнительных сведений.

  • Msg 19476, Level 16, State 4, Line 2 Сбой попытки создать сетевое имя и IP-адрес для прослушивателя. Возможно, служба WSFC не запущена или недоступна в текущем состоянии, или значения, указанные для сетевого имени и IP-адреса, могут быть неверными. Проверьте состояние кластера WSFC и проверьте сетевое имя и IP-адрес у администратора сети.

В большинстве случаев сбой при создании прослушивателя, приводя к предыдущим сообщениям, вызван отсутствием разрешений для объекта имени кластера (CNO) в Active Directory на создание и чтение объекта-компьютера прослушивателя. Чтобы устранить эту проблему, ознакомьтесь со следующими статьями:

Если проблема по-прежнему существует, см. дополнительные сведения о группах доступности Always On.

Автоматическая отработка отказа не работает должным образом

Если вы заметили, что автоматическая отработка отказа не работает должным образом во время тестирования или в рабочей среде, см. статью Устранение неполадок автоматической отработки отказа в SQL Server 2012 Always On средах.

Неправильная настройка максимального числа сбоев за указанный период является одной из основных причин, из-за того, что первичная отработка отказа не выполняется автоматически. Значение по умолчанию для этого параметра — N–1, где N — количество реплик. Дополнительные сведения см. в разделе Предел максимального количества сбоев отказоустойчивого кластера (группы).

Если проблема по-прежнему существует, см. дополнительные сведения о группах доступности Always On.

Возникли проблемы при подключении к Always On группам доступности

После настройки прослушивателя группы доступности для группы доступности Always On в SQL Server 2012 г. возможно, вам не удастся связаться с прослушивателем или подключиться к нему из приложения. Может появиться сообщение об ошибке следующего вида:

Sqlcmd: Ошибка: Собственный клиент Microsoft SQL: истекло время ожидания входа.

Чтобы устранить эту и аналогичные ошибки, ознакомьтесь со следующими сведениями:

Ссылки на дополнительные сведения:

Если проблема по-прежнему существует, см. дополнительные сведения о группах доступности Always On.

У меня возникли проблемы с настройкой Always On групп доступности на виртуальной машине Azure (IaaS)

  1. Многие проблемы, связанные с Always On возникают из-за неправильной настройки прослушивателя. Если у вас возникли проблемы с подключением к прослушивателю,

    1. Убедитесь, что вы ознакомились со всеми ограничениями прослушивателя ILB и выполнили все действия, описанные в следующей статье, уделяя особое внимание настройке зависимостей, IP-адресу и различным другим параметрам в скрипте PowerShell.

    2. Если вы не уверены, вы можете удалить и повторно создать прослушиватель, как указано в приведенном выше документе.

  2. Если вы недавно переместили виртуальную машину в другую службу или IP-адреса изменились, необходимо обновить значение ресурса IP-адреса в соответствии с новым адресом и повторно создать конечную точку с балансировкой нагрузки для группы доступности. Ip-адрес можно обновить с помощью Get команд или Set следующим образом:

    Get-ClusterResource "IPResourceName" | Set-ClusterParameter -name Address -value "w.x.y.z"
    

Рекомендуемые документы:

Если проблема по-прежнему существует, см. дополнительные сведения о группах доступности Always On.

Переход на другой ресурс занимает много времени.

После автоматической отработки отказа или плановой отработки отказа вручную без потери данных в группе доступности может оказаться, что время отработки отказа превышает целевое время восстановления (RTO). Сведения об устранении причин и возможных решений см. в статье Устранение неполадок: превышено RTO группы доступности.

Если проблема по-прежнему существует, см. дополнительные сведения о группах доступности Always On.

Изменения в первичной реплике либо не отражаются, либо медленно реплицируются во вторичную реплику.

Вы можете заметить, что изменения на первичном реплика не распространяются на вторичные своевременно. Чтобы устранить эти проблемы, попробуйте выполнить следующие действия:

Если проблема по-прежнему существует, см. дополнительные сведения о группах доступности Always On.

Управление размером журнала транзакций для баз данных группы доступности

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

Дополнительные сведения см. в следующих разделах:

Если эти сведения не помогают, см. дополнительные сведения о группах доступности Always On.

Основной сервер или сервер-получатель в состоянии разрешения, или возникает непредвиденная отработка отказа

Если проблема по-прежнему существует, см. дополнительные сведения о группах доступности Always On.

Не удается перевести ресурсы в режим "в сети"

Проверьте, требуется ли много времени для восстановления баз данных, просмотрите сообщения в журнале ошибок SQL.

Если проблема по-прежнему существует, см. дополнительные сведения о группах доступности Always On.

Вопросы и ответы

  1. Можно ли использовать два прослушивателя для одной группы доступности?

    Да, можно настроить несколько прослушивателей для одной группы доступности. См. статью Создание нескольких прослушивателей для одной группы доступности (Goden Yao).

  2. Можно ли использовать отдельную сетевую карту карта для постоянного трафика и подключения клиента?

    Да, вы можете использовать выделенные сетевые карты карта для Always On трафика. См . раздел Настройка группы доступности для взаимодействия в выделенной сети.

  3. Какие выпуски поддерживают Always On экземпляры отказоустойчивого кластера?

    В этом разделе электронной документации по SQL Server содержатся дополнительные сведения: Выпуски и поддерживаемые функции для SQL Server 2016 г.

  4. Как выполнить восстановление в случае сбоя на всех узлах кластера?

    См. статью Аварийное восстановление WSFC через принудительный кворум (SQL Server).

  5. Где можно найти сведения о поддержке распределенных транзакций в конфигурациях группы доступности?

    См . статью Транзакции — группы доступности и зеркальное отображение базы данных.

  6. Как обновить конфигурации Always On?

    См. раздел Обновление экземпляров реплик группы доступности Always On.

  7. Как добавить базу данных с поддержкой TDE (прозрачное шифрование данных) в конфигурацию группы доступности?

    Сведения о добавлении базы данных с поддержкой TDE в группу доступности см. в статье Настройка Always On для базы данных TDE.

  8. Как настроить оповещения для проверки того, отстает ли получатель от основного?

    Можно использовать следующий скрипт:

    SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server,
    dr_state.database_id AS database_id,
    is_ag_replica_local = CASE
        WHEN ar_state.is_local = 1 THEN N'LOCAL'
        ELSE 'REMOTE'
        END,
    ag_replica_role = CASE
        WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED'
        ELSE ar_state.role_desc
        END,
    dr_state.last_hardened_lsn, dr_state.last_hardened_time,
    datediff(s,last_hardened_time, getdate()) AS 'seconds behind primary'
    FROM (( sys.availability_groups AS ag
    JOIN sys.availability_replicas AS ar
        ON ag.group_id = ar.group_id)
    JOIN sys.dm_hadr_availability_replica_states AS ar_state
        ON ar.replica_id = ar_state.replica_id)
    JOIN sys.dm_hadr_database_replica_states dr_state
        ON ag.group_id = dr_state.group_id AND dr_state.replica_id = ar_state.replica_id
    
  9. Как получать оповещения, если состояние базы данных отличается от синхронизированного?

    Можно использовать следующий скрипт:

    SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server,
    dr_state.database_id AS database_id,
    is_ag_replica_local = CASE
        WHEN ar_state.is_local = 1 THEN N'LOCAL'
        ELSE 'REMOTE'
        END,
    ag_replica_role = CASE
        WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED'
        ELSE ar_state.role_desc
        END,
    ar_state.connected_state_desc, ar.availability_mode_desc, dr_state.synchronization_state_desc
    FROM (( sys.availability_groups AS ag
    JOIN sys.availability_replicas AS ar
        ON ag.group_id = ar.group_id )
    JOIN sys.dm_hadr_availability_replica_states AS ar_state
        ON ar.replica_id = ar_state.replica_id)
    JOIN sys.dm_hadr_database_replica_states dr_state
        ON ag.group_id = dr_state.group_id AND dr_state.replica_id = ar_state.replica_id
    

    Дополнительные методы мониторинга Always On групп также можно просмотреть по следующим ссылкам:

Дополнительные сведения о группах доступности Always On