Что такое группа доступности Always On?

Применимо к: даSQL Server (все поддерживаемые версии)

В этом разделе рассматриваются основные понятия Группы доступности AlwaysOn , которые имеют большое значение для настройки групп доступности и управления группами доступности в среде SQL Server. Сводное описание преимуществ групп доступности и общие сведения по терминологии Группы доступности AlwaysOn см. в разделе Группы доступности AlwaysOn (SQL Server).

Группа доступности поддерживает реплицированную среду для дискретного набора пользовательских баз данных, известных как базы данных доступности. Можно создать группу доступности для обеспечения высокой доступности (HA) или для чтения и масштабирования. Группа доступности HA — это группа баз данных, для которых отработка отказа выполняется одновременно. Группа доступности для чтения и масштабирования — это группа баз данных, которые копируются на другие экземпляры SQL Server для рабочей нагрузки только для чтения. Группа доступности поддерживает один набор баз данных-источников и до восьми наборов соответствующих баз данных-получателей. Базы данных-получатели не являются резервными копиями. Продолжайте регулярно создавать резервные копии баз данных и их журналов транзакций.

Совет

Можно создать резервную копию базы данных-источника любого типа. Кроме того, также можно создавать резервные копии журналов и полные резервные копии баз данных-получателей. Дополнительные сведения см. в статье Активные вторичные реплики: резервное копирование во вторичных репликах (группы доступности Always On).

Каждый набор баз данных доступности размещается с помощью реплики доступности. Существует два типа реплик доступности: одна первичная реплика, которая размещает основные базы данных, и до восьми вторичных реплик, каждая из которых размещает набор вторичных баз данных и серверов как потенциальных объектов отказа для группы доступности. Группа доступности выполняет переход на другой ресурс на уровне реплики доступности. Реплика доступности обеспечивает избыточность только на уровне базы данных для набора баз данных из одной группы доступности. Отработка отказа не вызывается проблемами баз данных, например обозначением базы данных как подозрительной в связи с потерей файла данных или повреждением журнала транзакций.

Первичная реплика делает базы данных-источники доступными для соединений с клиентами для чтения и записи. первичная реплика отправляет записи журнала транзакций каждой базы данных-источника в каждую базу данных-получатель. Этот процесс, называемый синхронизацией данных, происходит на уровне базы данных. В каждой вторичной реплике кэшируются записи журнала транзакций (фиксируется журнал), а затем эти записи применяются в соответствующей базе данных-получателе. Синхронизация данных выполняется между базой данных-источником и каждой подключенной базой данных-получателем независимо от остальных баз данных. Поэтому приостановка или сбой базы данных-получателя не затрагивает другие базы данных-получатели, а приостановка или сбой базы данных-источника не затрагивает остальные базы данных-источники.

Также можно настроить одну или несколько вторичных реплик для поддержки доступа только для чтения к базам данных-получателям и настроить какую-либо вторичную реплику для резервного копирования в базы данных-получатели.

В SQL Server 2017 представлены две различные архитектуры для групп доступности. Группы доступности AlwaysOn обеспечивают высокий уровень доступности, аварийного восстановления, чтения и масштабирования или балансировки. Для этих групп доступности требуется диспетчер кластеров. В Windows диспетчер кластеров доступен в рамках отказоустойчивой кластеризации. В Linux можно использовать Pacemaker. Другая архитектура — это группа доступности для чтения и масштабирования. Эта группа доступности предоставляет реплики для рабочих нагрузок только для чтения, но не для обеспечения высокого уровня доступности. В группе доступности для чтения и масштабирования отсутствует диспетчер кластеров.

Для развертывания Группы доступности AlwaysOn в целях обеспечения высокой доступности в Windows требуется кластер WSFC. Все реплики доступности в заданной группе доступности должны располагаться на разных узлах одного кластера WSFC. Единственное исключение состоит в том, что при переносе в другой кластер WSFC группа доступности может временно находится в двух кластерах.

Примечание

Сведения о группах доступности в Linux см. в статье Группы доступности Always On для SQL Server в Linux.

В конфигурации с высоким уровнем доступности роль кластера создается для каждой создаваемой группы доступности. Кластер WSFC отслеживает эту роль для оценки работоспособности первичной реплики. Кворум для Группы доступности AlwaysOn рассчитывается на всех узлах в кластере WSFC вне зависимости от того, хранится ли на данном узле кластера какая-либо реплика доступности. В отличие от процесса зеркального отображения базы данных, в Группы доступности AlwaysOn нет роли следящего объекта.

Примечание

Сведения о связи компонентов AlwaysOn SQL Server с кластером WSFC см. в разделе Отказоустойчивая кластеризация Windows Server (WSFC) с использованием SQL Server.

Ниже показана группа доступности, которая содержит одну первичную реплику и четыре вторичные реплики. Поддерживаются до 8 вторичных реплик, в том числе одна первичная реплика и две вторичные реплики с синхронной фиксацией.

Группа доступности с пятью репликами

Базы данных доступности

Чтобы можно было добавить базу данных в группу доступности, база данных должна быть в сети, быть доступной для чтения и записи и существовать на экземпляре сервера, на котором располагается первичная реплика. При добавлении база данных присоединяется к группе доступности как база данных-источник, оставаясь доступной для клиентов. База данных-получатель не существует до тех пор, пока резервные копии новой базы данных-источника не будут восстановлены на экземпляр сервера, на котором размещается вторичная реплика (с помощью инструкции RESTORE WITH NORECOVERY). Новая база данных-получатель находится в состоянии RESTORING до тех пор, пока не войдет в состав группы доступности. Дополнительные сведения см. в статье Запуск перемещения данных для базы данных-получателя AlwaysOn (SQL Server).

Присоединение переводит базу данных-получатель в режим ONLINE и инициирует синхронизацию данных с соответствующей базой данных-источником. Синхронизация данных — это процесс, в ходе которого изменения в базе данных-источнике воспроизводятся в базе данных-получателе. В процессе синхронизации данных база данных-источник отправляет записи журнала транзакций в базу данных-получатель.

Важно!

База данных доступности в , Powershell и управляющих объектах SQL Server (SMO) иногда называется репликой базы данных Transact-SQL. Например, выражение "реплика базы данных" используется в именах динамических представлений управления AlwaysOn, возвращающих сведения о базах данных доступности: sys.dm_hadr_database_replica_states и sys.dm_hadr_database_replica_cluster_states. Однако в электронной документации по SQL Server термин «реплика» обычно относится к репликам доступности. Например, фразы «первичная реплика» и «вторичная реплика» всегда относятся к репликам доступности.

Реплики доступности

Каждая группа доступности определяет набор из двух или более партнеров по обеспечению отработки отказа, известных как реплики доступности. Реплики доступности являются компонентами группы доступности. На каждой реплике доступности размещается копия баз данных доступности в группе доступности. Для данной группы доступности реплики доступности должны находиться на разных экземплярах SQL Server , работающих на разных узлах кластера WSFC. На каждом из этих экземпляров сервера необходимо включить AlwaysOn.

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

Каждая реплика доступности получает роль — первичную роль или вторичную роль, которая наследуется базами данных доступности этой реплики. Роль данной реплики определяет, размещает ли она базы данных, доступные для чтения и записи, или базы данных только для чтения. Одна реплика, известная как первичная реплика, получает первичную роль и размещает базы данных, доступные для чтения и записи, которые известны как базы данных-получатели. По крайней мере одна из остальных реплик, называемая вторичной репликой, получает вторичную роль. Вторичная реплика размещает базы данных только для чтения, называемые базами данных-получателями.

Примечание

Если роль реплики доступности не определена, например, во время отработки отказа, ее базы данных временно пребывают в состоянии NOT SYNCHRONIZING. Их роль устанавливается в значение RESOLVING до тех пор, пока роль реплики доступности не будет разрешена. Если реплика доступности разрешается в основную роль, ее базы данных становятся базами данных-источниками. Если реплика доступности разрешается во вторичную роль, ее базы данных становятся базами данных-получателями.

Режимы доступности

Режим доступности — это свойство каждой реплики доступности. Режим доступности определяет, ждет ли первичная реплика перед фиксацией транзакций для базы данных, чтобы данная вторичная реплика записала записи журнала транзакций на диск (записала журнал на диск). Группы доступности AlwaysOn поддерживает два режима доступности — режим асинхронной фиксации и режим синхронной фиксации.

  • Asynchronous-commit mode

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

  • Synchronous-commit mode

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

Дополнительные сведения см. в разделе Режимы доступности (группы доступности AlwaysOn).

Типы отработки отказа

В рамках контекста сеанса между первичной репликой и вторичной репликой, первичная и вторичная роли становятся потенциально взаимозаменяемыми в процессе, который называется отработка отказа. Во время отработки отказа вторичная реплика принимает первичную роль и становится новой первичной репликой. Новая первичная реплика переводит свои базы данных в режим «в сети» в качестве баз данных-источников и выполняет откат всех незафиксированных транзакций. Когда прежняя первичная реплика становится доступной, она принимает вторичную роль и становится вторичной репликой. Прежние базы данных-источники становятся базами данных-получателями, и синхронизация данных возобновляется.

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

  • Режим синхронной фиксации поддерживает две формы перехода на другой ресурс — запланированный переход на другой ресурс вручную и автоматический переход на другой ресурс, если целевая вторичная реплика синхронизируется с первичной. Поддержка этих форм отработки отказа зависит от свойства режима отработки отказа партнеров по обеспечению отработки отказа. Если режим перехода на другой ресурс имеет значение «вручную» для первичной или вторичной реплики, то для этой вторичной реплики поддерживается только режим перехода на другой ресурс «вручную». Если режим перехода на другой ресурс имеет значение «автоматический» как для первичной, так и для вторичной реплики, то эта вторичная реплика поддерживает как автоматический, так и переход на другой ресурс вручную.

    • Переход на другой ресурс вручную (без потери данных)

      Переход на другой ресурс вручную происходит вслед за тем, как администратор баз данных выполняет команду перехода на другой ресурс, после чего синхронизируемая вторичная реплика принимает первичную роль (с гарантированной защитой данных), а первичная реплика — вторичную роль. Для перехода на другой ресурс вручную требуется, чтобы первичная реплика и целевая вторичная реплика работали в режиме синхронной фиксации, при этом вторичная реплика уже должна быть синхронизирована.

    • Автоматический переход на другой ресурс (без потери данных)

      Автоматический переход на другой ресурс возникает в ответ на сбой, в результате которого синхронизируемая вторичная реплика принимает первичную роль (с гарантированной защитой данных). Когда прежняя первичная реплика становится доступной, она принимает вторичную роль. Для автоматического перехода на другой ресурс требуется, чтобы первичная реплика и целевая вторичная реплика работали в режиме синхронной фиксации, а режим отработки отказа имел значение «Автоматический». Помимо этого, вторичная реплика уже должна быть синхронизирована, иметь WSFC-кворум и отвечать условиям, указанным в гибкой политике перехода на другой ресурсдля группы доступности.

      Важно!

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

    Примечание

    Заметьте, что если команда принудительной отработки отказа выполняется в синхронизированной вторичной реплике, то она работает так же, как в случае запланированного перехода на другой ресурс вручную.

  • В режиме асинхронной фиксации единственная возможная форма отработки отказа — это принудительный переход на другой ресурс вручную (с возможной потерей данных), который обычно называется принудительная отработка отказа. Принудительная отработка отказа считается формой перехода на другой ресурс вручную, поскольку она может быть инициирована только вручную. Принудительная отработка отказа является вариантом аварийного восстановления. Это единственная форма отработки отказа, которая возможна в случае, если целевая вторичная реплика не синхронизирована с первичной репликой.

Дополнительные сведения см. далее в подразделе Отработка отказа и режимы отработки отказа (группы доступности AlwaysOn).

Клиентские соединения

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

Прослушиватель группы доступности связан с уникальным DNS-именем, которое является виртуальным сетевым именем (VNN), одним или несколькими виртуальными IP-адресами (VIP) и номером TCP-порта. Дополнительные сведения см. в разделе Прослушиватели групп доступности, возможность подключения клиентов и отработка отказа приложений (SQL Server).

Совет

Если в группе доступности имеется только две реплики доступности и в ней не разрешен доступ только для чтения к вторичной реплике доступности, клиенты смогут подключаться к первичной реплике доступности с помощью строк подключения к зеркальному отображению базы данных. Этот подход может быть временно полезным после миграции базы данных с зеркального отображения базы данных на сервер Группы доступности AlwaysOn. Прежде чем добавлять другие вторичные реплики, потребуется создать прослушиватель группы доступности, группу доступности и обновить приложения так, чтобы они использовали сетевое имя прослушивателя.

Активные вторичные реплики

Группы доступности AlwaysOn поддерживает активные вторичные реплики. Активные вторичные функции поддерживают следующее.

  • Проведение операций резервного копирования со вторичными репликами.

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

  • Доступ только для чтения к одной или нескольким вторичным репликам (доступные для чтения вторичные реплики)

    Любая вторичная реплика доступности может быть настроена на получение доступа только для чтения ко своим локальным базам данных, хотя некоторые операции поддерживаются не полностью. Это предотвратит попытки подключения для чтения и записи к вторичной реплике. Кроме того, можно запретить рабочие нагрузки только для чтения на первичной реплике, разрешив доступ только для чтения и записи. Это предотвратит подключение только для чтения к первичной реплике. Дополнительные сведения см. в статье Активные вторичные реплики: вторичные реплики для чтения (группы доступности Always On).

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

Период времени ожидания сеанса

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

Ограничение времени ожидания сеанса исключает неограниченное продолжение работы реплики, ожидающей сообщения проверки связи от другой реплики. Если в течение периода ожидания от другой реплики не приходит сообщение проверки связи, то реплика прекращает ожидание. Соединение закрывается, и реплика переходит в состояние DISCONNECTED. Даже если для отключенной реплики настроен режим синхронной фиксации, транзакции не будут ожидать ее повторного подключения и повторной синхронизации.

По умолчанию период времени ожидания сеанса каждой реплики доступности составляет 10 секунд. Это значение задается пользователем и не может быть меньше 5 секунд. Обычно рекомендуется установить период времени ожидания 10 секунд и более. При установке значения меньше 10 секунд в сильно загруженной системе возникает вероятность ошибочного сообщения об ошибке.

Примечание

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

Автоматическое восстановление страниц

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

Дополнительные сведения см. в статье Автоматическое восстановление страниц (группы доступности: зеркальное отображение баз данных).

См. также:

Режимы доступности (группы доступности AlwaysOn)
Отработка отказа и режимы отработки отказа (группы доступности AlwaysOn)
Общие сведения об инструкциях Transact-SQL для групп доступности AlwaysOn (SQL Server)
Обзор командлетов PowerShell для групп доступности AlwaysOn (SQL Server)
Поддержка высокого уровня доступности в базах данных OLTP в памяти
Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server)
Создание и настройка групп доступности (SQL Server)
Активные вторичные реплики: вторичные реплики для чтения (группы доступности Always On)
Активные вторичные реплики: резервное копирование во вторичных репликах (группы доступности Always On)
Прослушиватели групп доступности, возможность подключения клиентов и отработка отказа приложений (SQL Server)