Высокий уровень доступности и защита данных для конфигураций группы доступности

Применимо к:SQL Server в Linux

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

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

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

Например, группа доступности в кластере Linux имеет CLUSTER_TYPE = EXTERNAL. Нет WSFC для управления переключением при отказе. В этом случае метаданные конфигурации управляются и поддерживаются экземплярами SQL Server. Так как в этом кластере нет следящего сервера, для хранения метаданных состояния конфигурации требуется третий экземпляр SQL Server. Все три экземпляра SQL Server вместе предоставляют распределенное хранилище метаданных для кластера.

Менеджер кластера может запрашивать экземпляры SQL Server в группе доступности и оркестрировать переключение на резерв для обеспечения высокой доступности. В кластере Linux Pacemaker является диспетчером кластеров.

Начиная с SQL Server 2017 (14.x) CU 1, высокий уровень доступности для группы доступности с CLUSTER_TYPE = EXTERNAL обеспечивается двумя синхронными репликами, а также одной репликой только для конфигурации. Только реплика конфигурации может размещаться в любом выпуске SQL Server 2017 (14.x) CU 1 или более поздней версии (включая выпуск SQL Server Express). Только реплика конфигурации сохраняет сведения о конфигурации группы доступности в master базе данных, но не содержит пользовательские базы данных в группе доступности.

Влияние конфигурации на параметры ресурсов по умолчанию

Параметр REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT ресурса кластера гарантирует, что указанное число вторичных реплик записывает данные транзакций в журнал до фиксации каждой транзакции первичной реплики. При использовании внешнего диспетчера кластеров этот параметр влияет как на высокую доступность, так и на защиту данных. Значение по умолчанию для этого параметра зависит от архитектуры на момент создания ресурса кластера. При установке агента ресурсов SQL Server — mssql-server-ha и создании ресурса кластера для группы доступности диспетчер кластеров обнаруживает конфигурацию группы доступности и задает REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT соответствующим образом.

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

В следующих разделах описано поведение по умолчанию для ресурса кластера.

Выберите дизайн группы доступности, соответствующий конкретным бизнес-требованиям по высокой доступности, защите данных и масштабированию чтения.

Следующие конфигурации описывают конструктивные шаблоны группы доступности и возможности каждого из них. Эти конструктивные шаблоны применяются к группам доступности с CLUSTER_TYPE = EXTERNAL для решений высокой доступности.

  • Три синхронные реплики
  • Две синхронные реплики
  • Две синхронные реплики и конфигурационная реплика

Три синхронные реплики

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

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

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

Поведение доступности Масштабирование для чтения Высокая доступность и
защита данных
Защита данных
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 1 1 2
Основной сбой Автоматическое переключение на резервную систему. Возможна потеря данных. Новая первичная реплика доступна для чтения и записи. Автоматическое переключение на резервную систему. Новая первичная реплика доступна для чтения и записи. Автоматическое переключение на резервную систему. Новая основная база данных недоступна для чтения или записи, пока прежняя основная база данных не восстановится и не присоединится к группе доступности как вторичная.
Сбой одной вторичной реплики Основной узел доступен для чтения и записи. Доступна вторичная копия для операций чтения. Основной узел доступен для чтения и записи. Доступна вторичная копия для операций чтения. Основной объект остается недоступным для транзакций чтения или записи до тех пор, пока не восстановится вышедший из строя вторичный объект и не присоединится обратно к группе доступности.
Сбой двух вторичных реплик Основная реплика доступна только для операций чтения и недоступна для записи до тех пор, пока одна из вторичных реплик не восстановится и не воссоединится с группой доступности. Основная реплика доступна только для операций чтения и недоступна для записи до тех пор, пока одна из вторичных реплик не восстановится и не воссоединится с группой доступности. Основная реплика остается недоступной для операций чтения или записи, пока все неисправные вторичные реплики не будут восстановлены и не присоединятся к группе доступности.
Сбой первичной реплики и одной из вторичных реплик Автоматическое переключение на резервную систему. Возможна потеря данных. Новый основной сервер доступен только для операций чтения, но не для операций записи, пока одна из вторичных реплик не восстановится и повторно присоединится к группе доступности. Автоматическое переключение на резервную систему. Новый основной доступен только для операций чтения и записи, пока одна из вторичных реплик не восстановится и повторно присоединится к группе высокой доступности. Автоматическое переключение на резервную систему. Новый основной сервер остается недоступным для транзакций чтения или записи до тех пор, пока бывший основной и вторичная реплика не восстановятся и снова присоединятся к группе доступности.

1 По умолчанию

Две синхронные реплики

Эта конфигурация обеспечивает защиту данных. Подобно другим конфигурациям групп доступности, она может включать масштабирование чтения. Конфигурация двух синхронных реплик не обеспечивает автоматическую отказоустойчивость. Конфигурация двух реплик применима только к SQL Server 2017 (14.x) RTM и больше не поддерживается с более высокими версиями (CU1 и более поздних версий) SQL Server 2017 (14.x).

Схема группы доступности с первичной репликой, синхронизирующей данные с одной вторичной репликой.

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

Поведение доступности Масштабирование для чтения Защита данных
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 1 1
Основной сбой Автоматическое переключение на резервную систему. Возможна потеря данных. Новая первичная реплика доступна для чтения и записи. Автоматическое переключение на резервную систему. Новый первичный объект недоступен для транзакций чтения или записи до тех пор, пока бывший первичный источник не восстановится и повторно присоединит группу доступности в качестве вторичной.
Сбой одной вторичной реплики Первичная реплика доступна для чтения и записи и подвержена риску потери данных. Основной объект остается недоступным для транзакций чтения или записи до тех пор, пока не восстановится вышедший из строя вторичный объект и не присоединится обратно к группе доступности.

1 По умолчанию

Две синхронные реплики и реплика только для конфигурации

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

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

  1. Синхронная репликация пользовательских данных на вторичную реплику. Она также включает метаданные конфигурации группы доступности.
  2. Синхронная репликация метаданных конфигурации группы доступности. Он не содержит пользовательские данные.

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

Примечание.

Группа доступности с только репликой конфигурации является новой для SQL Server 2017 (14.x) CU 1. Все экземпляры SQL Server в группе доступности должны быть SQL Server 2017 (14.x) CU 1 или более поздней версии.

Значение по умолчанию для REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT равно 0. В следующей таблице описан режим доступности.

Поведение доступности Высокая доступность и
защита данных
Защита данных
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 1 1
Основной сбой Автоматическое переключение на резервную систему. Новая первичная реплика доступна для чтения и записи. Возможна потеря данных. Автоматическое переключение на резервную систему. Новый первичный объект недоступен для транзакций чтения или записи до тех пор, пока бывший первичный источник не восстановится и повторно присоединит группу доступности в качестве вторичной.
Сбой вторичной реплики Основной компонент — R/W, подвержен потере данных (если основной элемент откажет и не может быть восстановлен). Отсутствует автоматическое переключение на резервное устройство, если основной отказ. Основной объект остается недоступным для транзакций чтения или записи до тех пор, пока не восстановится вышедший из строя вторичный объект и не присоединится обратно к группе доступности. Также отсутствие реплики для отработки отказа при сбое первичной реплики.
Сбой реплики, предназначенной исключительно для конфигурации Основной узел доступен для чтения и записи. Отсутствует автоматическое переключение на резервное устройство, если основной отказ. Основной узел доступен для чтения и записи. Отсутствует автоматическое переключение на резервное устройство, если основной отказ.
Сбой синхронной вторичной реплики и реплики только для конфигурации Основной объект недоступен для транзакций чтения или записи. Отсутствие автоматического переключения на резерв. Основной объект недоступен для транзакций чтения или записи. Также отсутствие реплики для отработки отказа при сбое первичной реплики.

1 По умолчанию

Примечание.

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

Требования

  • Все реплики в группе доступности с репликой, предназначенной только для конфигурации, должны иметь версию SQL Server 2017 (14.x) CU 1 или более позднюю.
  • Любой выпуск SQL Server может размещать только реплику конфигурации, включая SQL Server Express.
  • В дополнение к первичной реплике для группы доступности требуется по меньшей мере одна вторичная реплика.
  • Реплики, предназначенные только для конфигурации, не учитываются при определении максимального количества реплик на экземпляр SQL Server. SQL Server стандартная редакция позволяет до трех реплик, SQL Server редакция Enterprise позволяет до девяти.

Рекомендации

  • Не более одной реплики только конфигурации на каждую группу доступности.
  • Реплика, предназначенная только для конфигурации, не может быть первичной репликой.
  • Невозможно изменить режим доступности конфигурационной реплики. Чтобы переключиться с реплики, поддерживающей только конфигурацию, на синхронную или асинхронную вторичную реплику, удалите реплику, поддерживающую только конфигурацию, и добавьте вторичную реплику с требуемым режимом доступности.
  • Реплика, поддерживающая только конфигурацию, синхронна с метаданными группы доступности. Пользовательские данные отсутствуют.
  • Группа доступности с одной первичной репликой и единственной конфигурационной репликой, но не имеющей вторичной реплики, является недопустимой.
  • Невозможно создать группу доступности в экземпляре выпуска SQL Server Express.

Общие сведения об агенте ресурсов SQL Server для Pacemaker

SQL Server 2017 (14.x) введен sequence_number для sys.availability_groups, чтобы показать, обновлена ли реплика, помеченная как SYNCHRONOUS_COMMIT. sequence_number является монотонно возрастающим bigint, который показывает, насколько актуальна локальная реплика группы доступности по сравнению с остальными репликами в группе доступности.

Это число обновляется при выполнении отработки отказа, добавлении или удалении реплик и других операций группы доступности.

Основная реплика обновляет число, а затем отправляет его на вторичные реплики. Актуальная вторичная реплика совпадает sequence_number с первичной.

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

Продвижение работает до тех пор, пока хотя бы одна реплика, доступная для этого, имеет тот же номер последовательности, что и предыдущий первичный. Поведение по умолчанию предназначено для агента ресурсов Pacemaker, чтобы автоматически устанавливать REQUIRED_COPIES_TO_COMMIT, так, чтобы по крайней мере одна актуальная синхронная реплика была обновлена и доступна в качестве цели для автоматического переключения при отказе. При каждом действии мониторинга значение REQUIRED_COPIES_TO_COMMIT вычисляется (и, если нужно, обновляется) как ('количество реплик синхронного коммита' / 2). Затем во время переключения агент ресурсов требует (total number of replicas - required_copies_to_commit реплики), чтобы реагировать на уведомление о предварительном повышении, чтобы одну из них сделать основной. Реплика с самым высоким значение sequence_number повышается до первичной.

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

  • REQUIRED_COPIES_TO_COMMIT — это 3 / 2 = 1

  • Количество реплик, которые должны отреагировать на предварительное действие: 3 – 1 = 2. Для активации переключения на резерв необходимо, чтобы были активны две реплики. При возникновении первичного сбоя, если одна из вторичных реплик не отвечает, и только одна из вторичных реплик отвечает на действие предварительного повышения, агент ресурсов не может гарантировать, что ответившая вторичная реплика имеет наибольшее значение sequence_number, и отказоустойчивость не активируется.

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

Внимание

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

Чтобы установить REQUIRED_COPIES_TO_COMMIT в 0, выполните команду:

sudo pcs resource update <ag_cluster> required_copies_to_commit=0

Эквивалентная команда с помощью crm (на SUSE Linux Enterprise Server) — это:

sudo crm resource param <ag_cluster> set required_synchronized_secondaries_to_commit 0

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

sudo pcs resource update <ag_cluster> required_copies_to_commit=

Примечание.

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

Балансируйте высокий уровень доступности и защиту данных

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

Предупреждение

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

sudo pcs resource update <ag1> required_copies_to_commit=0

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

В следующих таблицах описывается результат сбоя для первичных или вторичных реплик в разных конфигурациях ресурсов группы доступности:

Группа доступности — две синхронные реплики

Настройка Основной сбой Сбой одной вторичной реплики
REQUIRED_COPIES_TO_COMMIT = 0 Необходимо вручную выдать FAILOVER.

Может привести к потере данных.

Новая первичная реплика доступна для чтения и записи.
Первичная реплика доступна для чтения и записи и подвержена риску потери данных.
REQUIRED_COPIES_TO_COMMIT = 1 1 Кластер автоматически выдает FAILOVER

Потери данных нет.

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

1 Ресурсный агент SQL Server для Pacemaker с поведением по умолчанию.

Группа доступности — три синхронные реплики

Настройка Основной сбой Сбой одной вторичной реплики
REQUIRED_COPIES_TO_COMMIT = 0 Необходимо вручную выдать FAILOVER.

Может привести к потере данных.

Новая первичная реплика доступна для чтения и записи.
Основной узел доступен для чтения и записи.
REQUIRED_COPIES_TO_COMMIT = 1 1 Кластер автоматически выписывает FAILOVER.

Потери данных нет.

Новая первичная реплика доступна для чтения и записи.
Основной узел доступен для чтения и записи.

1 Ресурсный агент SQL Server для Pacemaker с поведением по умолчанию.