См. также
- Режимы доступности (группы доступности AlwaysOn)
- Отработка отказа и режимы отработки отказа (группы доступности AlwaysOn)
- Обзор сведений об инструкциях Transact-SQL для групп доступности AlwaysOn (SQL Server)
- Обзор командлетов PowerShell для групп доступности AlwaysOn (SQL Server)
- Поддержка высокого уровня доступности в базах данных OLTP в памяти
- Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server)
- Создание и настройка групп доступности (SQL Server)
- Активные вторичные реплики. Доступ только для чтения к вторичным репликам (группы доступности Always On)
- Активные вторичные реплики, резервное копирование во вторичных репликах (группы доступности Always On)
- Прослушиватели групп доступности, возможность подключения клиентов и отработка отказа приложений (SQL Server)
Что такое AlwaysOn в SQL Server 2016
Группы доступности AlwaysOn — это мощнейшее средство в составе дистрибутива SQL, дающее возможность для администраторов баз данных, реализовать очень высокий уровень доступности (HA, high availability) с помощью кластерных технологий и не обязательно иметь общую файловую область (Shared Storage), уменьшить время восстановления (disaster recovery, DR) после аварии или сбоя оборудования. Данная технология, является в моем понимании заменой предыдущей технологии по зеркалированию базы данных (Database Mirroring). Если вы ее уже пробовали на практике, то знаете, что это не синхронная репликация логов транзакций и базы данных.
AlwaysOn умеет в автоматическом или ручном режиме, переводить базу данных или даже группы баз данных на запасной (резервный) ресурс, есть поддержка до 4 вторичных реплик и автоматическое восстановление страниц при ошибках. В рамках этой технологии, можно производить создание кластеров БД, в разных подсетях или же сайтах, есть примеры реализации и между дата центрами.
Модель защиты AlwaysOn
Для того, чтобы что-то развернуть и управлять этим, необходимо разобраться в функциональных возможностях и тонкостях технологии, давай посмотрим за счет чего обеспечивается высокая доступность и отказоустойчивость БД в SQL Server 2016:
Первое на что следует обратить внимание, это на уровень серверов (физическое железо + операционная система Windows Server 2012 R2), тут отказоустойчивость реализована, с помощью кластера WSFC (Windows Server Failover Cluster — отказоустойчивый кластер Windows). Именно данная технология мониторит состояние членов кластера и принимает решение о координации при отказе.
Далее следует уровень SQL Server 2016, тут отказоустойчивость реализовывается возможностями отказоустойчивых кластерных экземпляров AlwaysOn (их еще называют инстансами)
Он разворачивается на нужном количестве узлов кластера Windows Server, и в случае недоступности одного из узлов, будет производится переключение.
Технология групп доступности AlwaysOn — реализуется на уровне баз данных, состоит из одной и более БД, которые будут переведены на дублирующий SQL Server в случае отказа.
Еще хочу отметить уровень, на котором подключаются клиенты, тут соединение возможно, как напрямую к экземпляру SQL Server, либо же используя virtual network name (VNN, виртуального сетевого имени), оно служит для скрытия уровней отказоустойчивого кластера Windows Server и групп доступности AlwaysOn, так же делает перенаправление запросов клиентов на нужные экземпляры SQL Server 2016 и реплику БД
Что входит в группы доступности AlwaysOn
Если обратиться к сайту Microsoft, то там можно обнаружить вот такие вещи, AlwaysOn легко взаимодействует со средой баз данных доступности, данные группы доступности содержат набор баз данных получателей и источников. Реплики доступности, как раз и размещают базы данных доступности. Реплики доступности бывают вот такие:
- Так называемая, первичная реплика, она содержит БД, являющиеся источником реплик
- И вторая реплика, которая содержит набор БД получателей, напоминаю, их может быть до 4, о чем я уже писал выше.
Когда клиент обращается к данным, их доступность реализуется ну уровне БД, и если по какой-то причине происходит сбой на ее уровне, это не может быть причиной переключиться на другую реплику. Если рассмотреть первичную реплику, то в ней все присутствующие базы данных-источники предоставляются клиентам как на чтение, так и на запись. Когда идет синхронизация данных, то запускается механизм передачи журнала транзакций из БД-источника во все базы получателей. Там журнал будет закэширован и лишь, когда будет осуществлена передача, будет выполнена транзакция в БД-получателей. Из чего видно, что обмен осуществляется независимо, и сбои не затрагивают остальные базы данных получателей.
Как я и писал выше, вам потребуется развернуть отказоустойчивый кластер Windows Server Failover Cluster на Windows Server 2012 R2 и выше. Ваши реплики будут располагаться на разных его узлах, но в рамках одного Windows Server Failover Cluster, в группах доступности отсутствует роль следящего.
Клиентские подключения
Можно обеспечить клиентское соединение с первичной репликой данной группы доступности, создав прослушиватель группы доступности. Прослушиватель группы доступности предоставляет набор ресурсов, который закрепляется за определенной группой доступности и направляет клиентские соединения на соответствующую реплику доступности.
Прослушиватель группы доступности связан с уникальным DNS-именем, которое является виртуальным сетевым именем (VNN), одним или несколькими виртуальными IP-адресами (VIP) и номером TCP-порта. Дополнительные сведения см. в разделе Прослушиватели групп доступности, возможность подключения клиентов и отработка отказа приложений (SQL Server).
Совет
Если в группе доступности имеется только две реплики доступности и в ней не разрешен доступ только для чтения к вторичной реплике доступности, клиенты смогут подключаться к первичной реплике доступности с помощью строк подключения к зеркальному отображению базы данных. Этот подход может быть временно полезным после миграции базы данных с зеркального отображения базы данных на сервер групп доступности Always On. Прежде чем добавлять другие вторичные реплики, потребуется создать прослушиватель для группы доступности, группу доступности и обновить приложения так, чтобы они использовали сетевое имя прослушивателя.
Автоматическое восстановление страниц
Каждая реплика доступности пытается автоматически восстановиться с учетом поврежденных страниц в локальной базе данных, разрешая определенные типы ошибок, которые предотвращают чтение страницы данных. Если вторичная реплика не может прочитать страницу, реплика запрашивает свежую копию страницы с первичной реплики. Если первичная реплика не может прочесть страницу, реплика направляет запрос получения свежей копии для всех вторичных реплик и получает страницу от первой ответившей реплики. Если этот запрос завершился успешно, то нечитаемая страница заменяется копией, в результате чего ошибка обычно устраняется.
Дополнительные сведения см. в статье Автоматическое восстановление страниц (группы доступности: зеркальное отображение баз данных).
Преимущества экземпляра отказоустойчивого кластера
При сбое оборудования или программного обеспечения сервера приложения или клиенты, связывающиеся с сервером, будут простаивать. Если экземпляр SQL Server настроен как отказоустойчивый кластер (а не как независимый экземпляр), высокий уровень доступности такого экземпляра SQL Server защищен наличием избыточных узлов в отказоустойчивом кластере. Только один из узлов в FCI принадлежит группе ресурсов WSFC одновременно. В случае сбоя (отказа оборудования, сбоя операционной системы, приложений или служб) либо при выполнении запланированного обновления группа передается во владение другому узлу отказоустойчивого кластера. Данный процесс не заметен для клиента или приложения, соединяющегося с SQL Server, и сводит к минимуму время ожидания приложения или клиента во время сбоя. Ниже перечислены некоторые ключевые преимущества, которые обеспечивают экземпляры отказоустойчивого кластера SQL Server :
Защита на уровне экземпляра через избыточность
Автоматический переход на другой ресурс в случае сбоя (отказа оборудования, сбоя операционной системы, приложений или служб)
Важно!
В группе доступности не поддерживается автоматический переход с FCI на другие узлы в пределах группы доступности. Это означает, что отказоустойчивые кластеры и независимые узлы не следует объединять внутри одной группы доступности, если автоматический переход на другой ресурс является важным компонентом решения высокого уровня доступности
Однако такое объединение можно сделать для решения аварийного восстановления .
Поддержка широкого массива решения хранения, включая диски кластеров WSFC (iSCSI, Fiber Channel и т. д.) и общие папки протокола SMB.
Решения аварийного восстановления с использованием нескольких подсетей FCI или запуска базы данных на FCI внутри группы доступности. Благодаря новой поддержке нескольких подсетей в Майкрософт SQL Server 2012 г. (11.x) экземпляр отказоустойчивого кластера с несколькими подсетами больше не требует виртуальной локальной сети, что повышает управляемость и безопасность отказоустойчивого кластера с несколькими подсетами.
Нулевая реконфигурация приложений и клиентов при сбое
Гибкая политика отработки отказа для гранулированных событий триггера для автоматической отработки отказа
Надежная отработка отказа посредством периодического подробного отслеживания исправности системы с помощью выделенных и постоянных соединений
Возможность настройки и предсказуемость во время отработки отказа посредством косвенных контрольных точек
Использование регулируемых ресурсов при отработке отказа
Прослушиватель
Чтобы правильно настроить прослушиватель группы доступности, выполните инструкции в статье Настройка прослушивателя для группы доступности Always On
-
После настройки прослушивателя проверить IP-адрес и порт, на котором он прослушивается, можно с помощью следующего запроса:
-
Вы также можете найти информацию о прослушивателе и портах SQL Server с помощью этого запроса:
-
Если же вам нужно установить подключение к прослушивателю и вы подозреваете, что порт заблокирован, проверьте порт с помощью командлета Test-NetConnection PowerShell (эквивалент telnet).
-
Наконец, проверьте, прослушивает ли прослушиватель по указанному порту:
Функция групп доступности AlwaysOn не включена
Функция Группы доступности AlwaysOn должна быть включена на каждом из экземпляров SQL Server.
Если функция групп доступности Always On не включена, при попытке создать группу доступности на SQL Server вы получите это сообщение об ошибке.
Сообщение об ошибке явно указывает, что функция групп доступности не включена, а также указывает, как включить ее. Существует два сценария, в которых может возникнуть это состояние, кроме очевидного, где группа доступности не была включена в первую очередь.
- Если SQL Server установлен и включена функция групп доступности Always On до установки компонента отказоустойчивой кластеризации Windows, при попытке создать группу доступности Always On может возникнуть эта ошибка.
- Если удалить существующую функцию отказоустойчивой кластеризации Windows и перестроить ее, пока на SQL Server по-прежнему включена функция Always On, при попытке использовать группу доступности снова может возникнуть эта ошибка.
В таких случаях для ее устранения можно выполнить следующие действия.
- Отключите функцию групп доступности.
- Перезапустите службу SQL Server.
- Включите функцию групп доступности обратно.
- Еще раз перезапустите службу SQL.
Дополнительные сведения см. в разделе Включение и отключение групп доступности Always On (SQL Server).
Рекомендации для компьютеров, на которых размещены реплики доступности (ОС Windows)
Разрешения (ОС Windows)
Для администрирования кластера WSFC пользователь должен быть системным администратором на каждом узле кластера.
Дополнительные сведения об учетной записи для администрирования кластера см. в Приложении A. Требования к отказоустойчивому кластеру.
Связанные задачи (ОС Windows)
Задача | Ссылка |
---|---|
Установите значение HostRecordTTL. |
Изменение параметра HostRecordTTL (с помощью Windows PowerShell)
-
Откройте окно Powershell с помощью варианта Запуск от имени администратора.
-
Импортируйте модуль FailoverClusters.
-
С помощью командлета Get-ClusterResource найдите ресурс сетевого имени, а затем с помощью командлета Set-ClusterParameter задайте значение HostRecordTTL следующим образом:
Get-ClusterResource «<NetworkResourceName>» | Set-ClusterParameter HostRecordTTL <TimeInSeconds>
В следующем примере для PowerShell задается значение HostRecordTTL в 300 секунд для сетевого ресурса сетевого имени .
Совет
Каждый раз при открытии нового окна PowerShell потребуется импортировать модуль FailoverClusters .
См. также (PowerShell)
-
Кластеризация и высокая доступность (блог группы отказоустойчивой кластеризации и балансировки сетевой нагрузки)
Активные вторичные реплики
Группы доступности Always On поддерживают активные вторичные реплики. Активные вторичные функции поддерживают следующее.
Проведение операций резервного копирования со вторичными репликами.
Вторичные реплики поддерживают создание резервных копий журнала и резервных копий только для копирования всей базы данных, файлов и файловых групп. Можно настроить группу доступности, указав предпочтение, где следует выполнять резервное копирование
Важно понимать, что приоритет не определяется в SQL Server, поэтому не влияет на выполнение нерегламентированного резервного копирования. Интерпретация данного приоритета зависит от логики, при ее наличии, которая внесена в задания резервного копирования для каждой из баз данных в указанной группе доступности
Для отдельной реплики доступности можно указать приоритет выполнения резервного копирования на данной реплике по отношению к другим репликам из той же группы доступности. Дополнительные сведения см. в статье Активные вторичные реплики, резервное копирование во вторичных репликах (группы доступности Always On).
Доступ только для чтения к одной или нескольким вторичным репликам (доступные для чтения вторичные реплики)
Для любой вторичной реплики доступности можно настроить доступ только для чтения ко всем ее локальным базам данных, но при этом не поддерживаются некоторые операции. Это предотвратит попытки подключения для чтения и записи к вторичной реплике. Кроме того, можно запретить рабочие нагрузки только для чтения на первичной реплике, разрешив доступ только для чтения и записи. Это предотвратит подключение только для чтения к первичной реплике. Дополнительные сведения см. в разделе Активные вторичные реплики: доступные только для чтения вторичные реплики (группы доступности Always On).
Если в группе доступности имеется прослушиватель группы доступности и одна или несколько доступных для чтения вторичных реплик, то SQL Server может направлять запросы на установку соединения (с целью считывания данных) к одной из них (маршрутизация только для чтения). Дополнительные сведения см. в разделе Прослушиватели групп доступности, возможность подключения клиентов и отработка отказа приложений (SQL Server).
Маршрутизация только для чтения работает неправильно
-
Убедитесь, что вы настроили маршрутизацию только для чтения, следуя инструкции по настройке маршрутизации только для чтения.
-
Проверьте поддержку клиентских драйверов.
Клиентское приложение должно использовать поставщика клиентов, поддерживающего параметр . См. раздел Поддержка возможности подключения драйвера и клиента для групп доступности
Примечание
При подключении к прослушивателю имени распределенной сети (DNN) поставщик также должен поддерживать параметр .
-
Убедитесь, что свойства строки подключения заданы правильно.
Для правильной работы маршрутизации только для чтения клиентское приложение должно использовать следующие свойства в строке подключения.
- Имя базы данных, принадлежащее группе доступности.
- Имя прослушивателя группы доступности.
- Для ApplicationIntent задано значение ReadOnly.
- Для имени распределенной сети (DNN) параметр MultiSubnetFailover должен иметь значение true.
Примеры
В этом примере показана строка подключения поставщика .NET System.Data.SqlClient для прослушивателя имени виртуальной сети (VNN).
В этом примере показана строка подключения поставщика .NET System.Data.SqlClient для прослушивателя имени распределенной сети (DNN).
Примечание
Если вы используете программы командной строки, такие как SQLCMD, убедитесь, что для имени сервера указаны правильные параметры. Например, в SQLCMD необходимо использовать параметр -S в верхнем регистре, который определяет имя сервера, а не параметр -s в нижнем регистре, который используется для разделителя столбцов.
Пример: -
Убедитесь, что прослушиватель группы доступности находится в режиме «в сети». Чтобы убедиться, что прослушиватель группы доступности подключен, выполните на первичной реплике следующий запрос:
Если прослушиватель отключен, вы можете попытаться включить его, выполнив следующую команду:
-
Убедитесь, что параметр READ_ONLY_ROUTING_LIST заполнен правильно. На первичной реплике убедитесь, что параметр READ_ONLY_ROUTING_LIST содержит только те экземпляры сервера, на которых размещены вторичные реплики для чтения.
Чтобы просмотреть свойства каждой реплики, выполните этот запрос и проверьте значение URL-адреса конечной точки подключения реплики только для чтения.
Чтобы просмотреть список маршрутизации только для чтения и сравнить с URL-адресом конечной точки:
Чтобы изменить список маршрутизации только для чтения, можно использовать следующий запрос:
Дополнительные сведения см. в статье Настройка маршрутизации только для чтения в группе доступности — SQL Server Always On.
-
Убедитесь, что открыт порт READ_ONLY_ROUTING_URL. Убедитесь, что брандмауэр Windows не блокирует порт READ_ONLY_ROUTING_URL. В брандмауэре Windows настройте доступ к ядру СУБД для всех реплик в списке read_only_routing_list и всех клиентов, которые будут подключаться к этим репликам.
Примечание
Если вы используете SQL Server на виртуальной машине Azure, потребуются дополнительные действия по настройке. Убедитесь, что группа безопасности сети (NSG) для виртуальных машин каждой реплики разрешает трафик на порт конечной точки и на порт DNN, если вы используете прослушиватель DNN. Если используется прослушиватель VNN, проверьте правильность настройки подсистемы балансировки нагрузки.
-
Убедитесь, что параметр READ_ONLY_ROUTING_URL (TCP://system-address:port) содержит правильное полное доменное имя (FQDN) и номер порта. Пример
- Вычисление значения read_only_routing_url для AlwaysOn
- sys.availability_replicas (Transact-SQL)
- ALTER AVAILABILITY GROUP (Transact-SQL)
-
Убедитесь в правильности сетевой конфигурации SQL Server в SQL Server Configuration Manager.
Для каждой реплики в списке read_only_routing_list должно выполняться следующее:
- включено удаленное подключение к SQL Server;
- включен протокол TCP/IP;
- правильно настроены IP-адреса.
Примечание
Вы можете быстро проверить правильность настройки, если вы можете подключиться с удаленного компьютера к целевому имени экземпляра вторичной реплики SQL Server с использованием синтаксиса .
См. статьи Настройка сервера для прослушивания определенного TCP-порта (диспетчер конфигурации SQL Server) и Просмотр или изменение свойств сервера (SQL Server).
Базы данных доступности
Чтобы можно было добавить базу данных в группу доступности, база данных должна быть в сети, быть доступной для чтения и записи и существовать на экземпляре сервера, на котором располагается первичная реплика. При добавлении база данных присоединяется к группе доступности как база данных-источник, оставаясь доступной для клиентов. База данных-получатель не существует до тех пор, пока резервные копии новой базы данных-источника не будут восстановлены на экземпляр сервера, на котором размещается вторичная реплика (с помощью инструкции RESTORE WITH NORECOVERY). Новая база данных-получатель находится в состоянии RESTORING до тех пор, пока не войдет в состав группы доступности. Дополнительные сведения см. в статье Запуск перемещения данных для базы данных-получателя AlwaysOn (SQL Server).
Присоединение переводит базу данных-получатель в режим ONLINE и инициирует синхронизацию данных с соответствующей базой данных-источником. Синхронизация данных — это процесс, в ходе которого изменения в базе данных-источнике воспроизводятся в базе данных-получателе. В процессе синхронизации данных база данных-источник отправляет записи журнала транзакций в базу данных-получатель.
Важно!
База данных доступности в Transact-SQL, Powershell и управляющих объектах SQL Server (SMO) иногда называется репликой базы данных. Например, выражение «реплика базы данных» используется в именах динамических представлений управления AlwaysOn, возвращающих сведения о базах данных доступности: sys.dm_hadr_database_replica_states и sys.dm_hadr_database_replica_cluster_states. Однако в электронной документации по SQL Server термин «реплика» обычно относится к репликам доступности. Например, фразы «первичная реплика» и «вторичная реплика» всегда относятся к репликам доступности.
Использование существующей группы управления
Используйте следующую серию задач при использовании существующей группы управления с SQL Server группы доступности AlwaysOn.
- Подготовьте SQL Server настройку AlwaysOn отдельно. Также можно рассмотреть SQL Server AlwaysOn с FCI.
- Создайте прослушиватель группы доступности (AGL) и выберите соответствующий номер порта. Избегайте порта по умолчанию 1433. Например: AGL name = SMListener и AGL Port = 5122
- Откройте входящий порт для экземпляра SQL Server и AGL на каждом компьютере, на котором выполняется SQL Server.
- Просмотрите сведения о и выполните следующие действия.
- На шаге 5, чтобы настроить таблицы Service Manager, используйте вместо имени компьютера, в котором размещена база данных Service Manager, например SMListener,5122
- На шаге 6 используйте для обновления таблиц базы данных DWStaging и конфигурации.
- На шаге 7 настройте реестр на всех серверах управления, измените раздел реестра и предоставьте значение .
Чтобы свести итог, вы изменяете имя компьютера, на котором размещена база данных Service Manager, на AGL Name, номер порта AGL для поддержки SQL Server AlwaysOn.
Создание группы доступности
CREATE AVAILABILITY GROUP создает новую группу доступности и, при необходимости, прослушиватель группы доступности. Как минимум необходимо указать экземпляр локального сервера, который станет начальной первичной репликой. Дополнительно можно указать до четырех вторичных реплик.
Выполните CREATE AVAILABILITY GROUP в экземпляре SQL Server, на котором должна размещаться начальная первичная реплика создаваемой группы доступности. Этот экземпляр сервера должен находиться на узле отказоустойчивого кластера WSFC. Дополнительные сведения см. в статье Предварительные требования, ограничения и рекомендации для групп доступности Always On.
Сетевой доступ
Каждый экземпляр сервера, на котором размещается реплика доступности, должен иметь доступ к порту каждого другого экземпляра сервера по протоколу TCP
Это особенно важно, если экземпляры сервера находятся в разных доменах, не имеющих доверительных отношений друг с другом (домены без доверия). Проверьте, можно ли подключиться к конечным точкам, выполнив следующие действия:
-
Используйте команду Test-NetConnection (эквивалент Telnet) для проверки подключения. Вот примеры команд, которые можно использовать:
-
Если конечная точка выполняет прослушивание и подключение успешно установлено, вы увидите «TcpTestSucceeded : True». В противном случае вы получите результат «TcpTestSucceeded : False».
-
Если подключение Test-NetConnection (Telnet) к IP-адресу работает, но подключение по имени сервера установить не удается, вероятно, это вызвано проблемой с DNS или с разрешением имен.
-
Если удается установить подключение по имени сервера, но не по IP-адресу, возможно, на этом сервере определено несколько конечных точек, прослушивающих этот порт (вероятно, запущен еще один экземпляр SQL). Несмотря на то что конечная точка на рассматриваемом экземпляре находится в состоянии «ЗАПУЩЕНО», другая конечная точка может фактически занимать порт и не позволять первой конечной точке прослушивать и устанавливать соединения TCP.
-
Если установить подключение с помощью Test-NetConnection не удается, проверьте, не блокируется ли нужный порт конечной точки брандмауэром или антивирусной программой. Проверьте параметры брандмауэра, чтобы узнать, разрешена ли связь для портов конечных точек между экземплярами серверов, на которых размещаются первичная и вторичная реплика (по умолчанию порт 5022).
Выполните следующий сценарий PowerShell, чтобы проверить наличие отключенных правил для входящего трафика. -
Если вы используете SQL Server на виртуальной машине Azure, также необходимо . Проверьте параметры брандмауэра (и группу безопасности сети для виртуальной машине Azure), чтобы узнать, разрешена ли связь для портов конечных точек между экземплярами серверов, на которых размещаются первичная и вторичная реплика (по умолчанию порт 5022).
-
Получите выходные данные командлета Get-NetTCPConnection (эквивалент NETSTAT -a) и убедитесь, что для IP-адреса и порта заданной конечной точки указано состояние LISTENING (Ожидает передачи данных) или ESTABLISHED (Соединение установлено)
Создание группы доступности
CREATE AVAILABILITY GROUP создает новую группу доступности и, при необходимости, прослушиватель группы доступности. Как минимум необходимо указать экземпляр локального сервера, который станет начальной первичной репликой. Дополнительно можно указать до четырех вторичных реплик.
Выполните CREATE AVAILABILITY GROUP в экземпляре SQL Server, на котором должна размещаться начальная первичная реплика создаваемой группы доступности. Этот экземпляр сервера должен находиться на узле отказоустойчивого кластера WSFC. Дополнительные сведения см. в статье Предварительные требования, ограничения и рекомендации для групп доступности Always On.
Ограничения на инструкции AVAILABILITY GROUP языка Transact-SQL
Инструкции CREATE AVAILABILITY GROUP, ALTER AVAILABILITY GROUP и DROP AVAILABILITY GROUP Transact-SQL имеют следующие ограничения.
-
За исключением DROP AVAILABILITY GROUP, для выполнения этих инструкций требуется, чтобы была включена служба HADR на экземпляре SQL Server. Дополнительные сведения см. в статье Включение или отключение функции групп доступности Always On.
-
Эти инструкции не могут выполняться в пределах транзакций или пакетов.
-
Несмотря на то, что эти инструкции предназначены для восстановления после сбоя, они не гарантируют выполнения отката всех изменений при сбое. Однако системы должны быть способны четко выполнять обработку и пропуск частичных сбоев.
-
Эти инструкции не поддерживают выражения или переменные.
-
Если при выполнении действия группы доступности или восстановления будет выполнена новая инструкция Transact-SQL, эта инструкция возвратит ошибку. В случае необходимости дождитесь завершения действия или восстановления, а затем повторно выполните инструкцию.
Перед началом
Настоятельно рекомендуется прочитать этот раздел, прежде чем пытаться настроить свою первую группу доступности.
Предварительные условия, ограничения и рекомендации
В большинстве случаев можно использовать мастер создания групп доступности для выполнения всех задач по созданию и настройке группы доступности. Однако некоторые задачи может потребоваться выполнить вручную.
Если вы используете тип кластера WSFC для размещения группы доступности, необходимо, чтобы экземпляры SQL Server, на которых находятся реплики доступности, были расположены на различных серверах кластера (или узлах) одного кластера WSFC. Кроме того, убедитесь, что каждый экземпляр сервера соответствует всем другим обязательным условиям Группы доступности AlwaysOn. Для получения дополнительных сведений настоятельно рекомендуется изучить статью Предварительные требования, ограничения и рекомендации для групп доступности Always On (SQL Server).
Если экземпляр сервера, который выбран для размещения реплики доступности, запускается из-под учетной записи службы домена и не содержит конечной точки зеркального отображения базы данных, то мастер может создать конечную точку и предоставить учетной записи службы экземпляра сервера разрешение CONNECT. Но если служба SQL Server запущена от имени встроенной учетной записи, такой как «Локальная система», «Локальная служба» или «Сетевая служба», или от имени учетной записи, не входящей в домен, то для проверки подлинности конечных точек необходимо пользоваться сертификатами, а мастер не сможет создать точку зеркального отображения базы данных на этом экземпляре сервера. В этом случае рекомендуется создать конечные точки зеркального отображения базы данных вручную до запуска мастера создания групп доступности.
Использование сертификатов для конечной точки зеркального отображения базы данных
Экземпляры отказоустойчивого кластера SQL Server не поддерживают автоматический переход на другой ресурс с учетом групп доступности, поэтому любая реплика доступности, размещенная в них, должна быть настроена для перехода на другой ресурс вручную.
Предварительные условия для выполнения мастером полной первоначальной синхронизации данных
Все пути к файлам базы данных должны быть одинаковыми на всех экземплярах сервера, на которых размещены реплики группы доступности.
На экземпляре сервера, содержащем вторичную реплику, не может существовать имя базы данных-источника. Это означает, что еще не может существовать ни одна из новых баз данных-получателей.
Чтобы при помощи мастера можно было создавать резервные копии и обращаться к ним, необходимо будет указать общую сетевую папку. Для каждой первичной реплики учетная запись, используемая для запуска Компонент Database Engine , должна иметь разрешения в файловой системе на чтение и запись в общей сетевой папке
Для вторичных реплик учетная запись должна иметь разрешение на чтение в сетевой папке.
Важно!
Резервные копии журналов будут входить в цепочку резервных копий журналов. Храните файлы резервных копий журналов надлежащим образом.
Если нет возможности воспользоваться мастером для выполнения полной первоначальной синхронизации данных, то базы данных-получатели нужно подготовить вручную
Это можно сделать до или после запуска мастера. Дополнительные сведения см. в статье Ручная подготовка базы данных-получателя для присоединения к группе доступности (SQL Server).
Разрешения
Требуется членство в фиксированной роли сервера sysadmin и одно из разрешений: CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP или CONTROL SERVER.
Кроме того, требуется разрешение CONTROL ON ENDPOINT, если мастер группы доступности должен иметь возможность управлять конечной точкой зеркального отображения базы данных.
Ограничения на инструкции AVAILABILITY GROUP языка Transact-SQL
Инструкции CREATE AVAILABILITY GROUP, ALTER AVAILABILITY GROUP и DROP AVAILABILITY GROUP Transact-SQL имеют следующие ограничения.
-
За исключением DROP AVAILABILITY GROUP, для выполнения этих инструкций требуется, чтобы была включена служба HADR на экземпляре SQL Server. Дополнительные сведения см. в статье Включение или отключение функции групп доступности Always On.
-
Эти инструкции не могут выполняться в пределах транзакций или пакетов.
-
Несмотря на то, что эти инструкции предназначены для восстановления после сбоя, они не гарантируют выполнения отката всех изменений при сбое. Однако системы должны быть способны четко выполнять обработку и пропуск частичных сбоев.
-
Эти инструкции не поддерживают выражения или переменные.
-
Если при выполнении действия группы доступности или восстановления будет выполнена новая инструкция Transact-SQL, эта инструкция возвратит ошибку. В случае необходимости дождитесь завершения действия или восстановления, а затем повторно выполните инструкцию.