Поделиться через


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

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

Эта статья описывает поддерживаемые конфигурации развертывания для групп доступности Always On 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) с накопительным пакетом обновления 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) с накопительным пакетом обновления 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 Standard поддерживает до трех реплик, SQL Server Enterprise — до 9.

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

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

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

В SQL Server 2017 (14.x) появилось sequence_numbersys.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 по умолчанию.