Настройка группы отработки отказа для Базы данных SQL Azure

Применимо к:База данных SQL Azure

В этой статье описано, как настроить группу отработки отказа для отдельных и пуловых баз данных в База данных SQL Azure с помощью портал Azure, Azure PowerShell и Azure CLI.

Для комплексных сценариев просмотрите, как добавить одну базу данных в группу отработки отказа с помощью Azure PowerShell или Azure CLI.

Необходимые компоненты

Примите во внимание следующие необходимые условия для создания группы отработки отказа для отдельной базы данных:

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

Создание группы отработки отказа

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

  1. На портале Azure в меню слева выберите Azure SQL. Если Azure SQL нет в списке, выберите элемент Все службы и введите "Azure SQL" в поле поиска. (Необязательно) Щелкните звезду рядом с Azure SQL, чтобы добавить этот элемент в избранное и область навигации слева.

  2. Выберите базу данных, добавляемую в группу отработки отказа.

  3. Выберите имя сервера в разделе Имя сервера, чтобы открыть параметры для этого сервера.

    Open server for single db

  4. Выберите элемент Группы отработки отказа в области Параметры, а затем щелкните элемент Добавить группу, чтобы создать новую группу отработки отказа.

    Add new failover group

  5. На странице Группа отработки отказа введите или выберите обязательные значения, а затем щелкните Создать. Либо создайте новый сервер-получатель, либо выберите существующий сервер-получатель. Сервер-получатель в группе отработки отказа должен находиться в другом регионе, отличном от основного сервера.

    • Базы данных в группе: выберите базу данных для добавления в группу отработки отказа. Добавление базы данных в группу отработки отказа автоматически активирует георепликацию.

    Add SQL Database to failover group

Тестирование плановая отработка отказа

Проверьте отработку отказа группы отработки отказа без потери данных с помощью портал Azure или PowerShell.

Протестируйте отработку отказа для группы отработки отказа с помощью портала Azure.

  1. На портале Azure в меню слева выберите Azure SQL. Если Azure SQL нет в списке, выберите элемент Все службы и введите строку "Azure SQL" в поле поиска. (Необязательно) Щелкните звезду рядом с Azure SQL, чтобы добавить этот элемент в избранное и область навигации слева.

  2. Выберите базу данных, добавляемую в группу отработки отказа.

    Open server for single db

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

    Screenshot shows Failover groups where you can select a failover group for your SQL Server.

  4. Проверьте, какой сервер является основным, а какой — сервером-получателем.

  5. Щелкните элемент Отработка отказа в области задач, чтобы выполнить отработку отказа для группы отработки отказа с вашей базой данных.

  6. Выберите ответ Да в предупреждении о том, что сеансы TDS будут отключены.

    Fail over your failover group containing your database

  7. Проверьте, какой сервер теперь является основным, а какой — сервером-получателем. Если отработка отказа прошла успешно, роли этих двух серверов должны поменяться между собой.

  8. Снова щелкните элемент Отработка отказа, чтобы вернуть серверам исходные роли.

Важно!

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

Сведения о сквозных сценариях см. в статье о добавлении эластичного пула в группу отработки отказа с помощью Azure PowerShell или Azure CLI.

Необходимые компоненты

Примите во внимание следующие необходимые условия для создания группы отработки отказа для базы данных в пуле:

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

Создание группы отработки отказа

Создайте группу отработки отказа для своего эластичного пула, используя портал Azure или PowerShell.

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

  1. На портале Azure в меню слева выберите Azure SQL. Если Azure SQL нет в списке, выберите элемент Все службы и введите строку "Azure SQL" в поле поиска. (Необязательно) Щелкните звезду рядом с Azure SQL, чтобы добавить этот элемент в избранное и область навигации слева.

  2. Выберите эластичный пул, добавляемый в группу отработки отказа.

  3. На панели Обзор выберите имя сервера в разделе Имя сервера, чтобы открыть параметры для этого сервера.

    Open server for elastic pool

  4. Выберите элемент Группы отработки отказа в области Параметры, а затем щелкните элемент Добавить группу, чтобы создать новую группу отработки отказа.

    Add new failover group

  5. На странице Группа отработки отказа введите или выберите обязательные значения, а затем щелкните Создать. Либо создайте новый сервер-получатель, либо выберите существующий сервер-получатель.

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

    Add elastic pool to failover group

  7. Выберите, чтобы применить параметры эластичного пула к группе отработки отказа, а затем нажмите кнопку "Создать", чтобы создать группу отработки отказа. Добавление эластичного пула в группу отработки отказа автоматически запускает процесс георепликации.

Тестирование плановая отработка отказа

Проверьте отработку отказа без потери данных эластичного пула с помощью портал Azure или PowerShell.

Переключите группу отработки отказа на сервер-получатель, а затем восстановите размещение с помощью портала Azure.

  1. На портале Azure в меню слева выберите Azure SQL. Если Azure SQL нет в списке, выберите элемент Все службы и введите строку "Azure SQL" в поле поиска. (Необязательно) Щелкните звезду рядом с Azure SQL, чтобы добавить этот элемент в избранное и область навигации слева.

  2. Выберите эластичные пулы, которые требуется выполнить отработку отказа.

  3. На панели Обзор выберите имя сервера в разделе Имя сервера, чтобы открыть параметры для этого сервера.

    Screenshot of select server for elastic pool in the Azure portal.

  4. Выберите группы отработки отказа в Параметры и выберите созданную ранее группу отработки отказа.

    Screenshot shows Failover groups where you can select a failover group for your SQL Server.

  5. Проверьте, какой сервер является источником, а какой — получателем.

  6. Щелкните Отработка отказа в области задач, чтобы выполнить отработку отказа для группы отработки отказа с вашим эластичным пулом.

  7. Выберите ответ Да в предупреждении о том, что сеансы TDS будут отключены.

    Fail over your failover group containing your database

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

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

Важно!

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

Использование приватного канала позволяет связать логический сервер с конкретным частным IP-адресом в виртуальной сети и подсети.

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

  1. Убедитесь, что основной сервер и сервер-получатель находятся в парном регионе.
  2. Создайте виртуальную сеть и подсеть в каждом регионе для размещения частных конечных точек для первичных и вторичных серверов, чтобы они имели неперекрывающиеся IP-адреса. Например, диапазон адресов основной виртуальной сети 10.0.0.0/16 и диапазон адресов вторичной виртуальной сети (10.0.0.1/16) пересекаются. Дополнительные сведения о диапазонах адресов виртуальных сетей см. в блоге, посвященном проектированию виртуальных сетей Azure.
  3. Создайте частную конечную точку и Частную зону DNS Azure для основного сервера.
  4. Также создайте частную конечную точку для сервера-получателя, но в этот раз повторно используйте ту же Частную зону DNS, которая была создана для основного сервера.
  5. После создания приватного канала можно создать группу отработки отказа, выполнив действия, описанные ранее в этой статье.

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

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

Конечная точка прослушивателя находится в виде fog-name.database.windows.netи отображается в портал Azure при просмотре группы отработки отказа:

Failover group connection string

Масштабирование баз данных в группе отработки отказа

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

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

Примечание.

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

Предотвращение потери критически важных данных

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

Примечание.

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

Изменение дополнительного региона

Чтобы проиллюстрировать последовательность изменений, предположим, что сервер A является основным сервером, сервер B является существующим вторичным сервером, а сервер C является новым вторичным в третьем регионе. Чтобы выполнить переход, выполните следующие действия.

  1. Создайте дополнительные получатели каждой базы данных на сервере A на сервере C, используя активную георепликацию. Каждая база данных на сервере A будет иметь два секундных файла, один на сервере B и один на сервере C. Это гарантирует, что базы данных-источникы остаются защищенными во время перехода.
  2. Удаление группы отработки отказа. На этом этапе попытки входа с использованием конечных точек группы отработки отказа начинают завершать сбой.
  3. Повторно создайте группу отработки отказа с тем же именем между серверами A и В.
  4. Добавьте все базы данных-получатели на сервер A в новую группу отработки отказа. На этом этапе попытки входа перестают завершать сбой.
  5. Удалите сервер Б. Все базы данных на сервере Б будут удалены автоматически.

Изменение основного региона

Чтобы проиллюстрировать последовательность изменений, предположим, что сервер A является основным сервером, сервер B является существующим сервером-получателем, а сервер C — новым первичным в третьем регионе. Чтобы выполнить переход, выполните следующие действия.

  1. Выполните плановую геоработку отказа, чтобы переключить основной сервер на B. Сервер A становится новым сервером-получателем. Отработка отказа может привести к нескольким минутам простоя. Фактическое время зависит от размера группы отработки отказа.
  2. Создайте дополнительных получателей каждой базы данных на сервере A на сервере C, используя активную георепликацию. Каждая база данных на сервере B будет иметь два вторичных файла, один на сервере A и один на сервере C. Это гарантирует, что базы данных-источникы остаются защищенными во время перехода.
  3. Удаление группы отработки отказа. На этом этапе попытки входа с использованием конечных точек группы отработки отказа начинают завершать сбой.
  4. Повторно создайте группу отработки отказа с тем же именем между серверами Б и В.
  5. Добавьте все базы данных-исходники на сервер B в новую группу отработки отказа. На этом этапе попытки входа перестают завершать сбой.
  6. Выполните плановую геоработку отказа группы отработки отказа для переключения B и C. Теперь сервер C становится основным и вторичным. Все базы данных-получатели на сервере A будут автоматически связаны с основными базами данных на C. Как и в шаге 1, отработка отказа может привести к несколько минут простоя.
  7. Удалите сервер A. Все базы данных на сервере A будут удалены автоматически.

Важно!

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

Группы отработки отказа и сетевая безопасность

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

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

Если вы используете виртуальная сеть конечные точки и правила службы для ограничения доступа к базе данных, помните, что каждая конечная точка службы виртуальной сети применяется только к одному региону Azure. Конечная точка не поддерживает прием подключений из подсети в других регионах. Таким образом, только клиентские приложения, развернутые в одном регионе, могут подключаться к базе данных-источнику. Так как геоработка отказа приводит к перенаправке База данных SQL клиентских сеансов на сервер в другом (дополнительном) регионе, эти сеансы могут завершиться ошибкой, если произошел из клиента за пределами этого региона. По этой причине политика управляемой отработки отказа Майкрософт не может быть включена, если участвующие серверы включены в правила виртуальная сеть. Чтобы поддерживать политику отработки отказа вручную, выполните следующие действия.

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

Примечание.

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

Использование групп отработки отказа и правил брандмауэра

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

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

  1. создайте общедоступный IP-адрес;
  2. создайте общедоступный балансировщик нагрузки и назначьте ему общедоступный IP-адрес;
  3. создайте виртуальную сеть и виртуальные машины для интерфейсных компонентов;
  4. создайте группу безопасности сети и настройте входящие подключения.
  5. Убедитесь, что исходящие подключения открыты для Базы данных SQL Azure в регионе с помощью Sql.<Region>тега службы.
  6. Создайте правило брандмауэра базы данных SQL, чтобы разрешить входящий трафик из общедоступного IP-адреса, созданного на этапе 1.

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

Важно!

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

Разрешения

Управление разрешениями для группы отработки отказа осуществляется с помощью управления доступом на основе ролей Azure (Azure RBAC).

Доступ на запись в Azure RBAC необходим для создания групп отработки отказа и управления ими. Роль Участник SQL Server имеет все необходимые разрешения для управления группами отработки отказа.

В следующей таблице перечислены определенные области разрешений для Базы данных SQL Azure:

Действие Разрешение Область применения
Создание группы отработки отказа Доступ на запись для Azure RBAC Сервер-источник
Сервер-получатель
Все базы данных в группе отработки отказа
Обновление группы отработки отказа Доступ на запись для Azure RBAC Группа отработки отказа
Все базы данных на текущем сервере-источнике
Выполнение отработки отказа для группы отработки отказа Доступ на запись для Azure RBAC Группа отработки отказа на новом сервере

Ограничения

Следует учитывать следующие ограничения.

  • Группы отработки отказа не могут создаваться между двумя серверами в одном регионе Azure.
  • Группы отработки отказа поддерживают геоизбыточное реплика всех баз данных в группе только одному логическому серверу в другом регионе.
  • Невозможно переименовать группы отработки отказа. Вам нужно будет удалить группу и создать ее повторно с другим именем.
  • Переименование базы данных не поддерживается для баз данных в группе отработки отказа. Необходимо временно удалить группу отработки отказа, чтобы можно было переименовать базу данных или удалить базу данных из группы отработки отказа.
  • Удаление группы отработки отказа для одиночной базы данных или базы данных в пуле не приводит к остановке репликации и удалению реплицированной базы данных. Вам потребуется вручную остановить гео-реплика tion и удалить базу данных с сервера-получателя, если вы хотите добавить отдельную или пуловую базу данных обратно в группу отработки отказа после удаления. При попытке добавить базу данных в группу отработки отказа может возникнуть ошибка The operation cannot be performed due to multiple errors .
  • Имя группы отработки отказа распространяется на ограничения именования.

Программное управление группами отработки отказа

Группы отработки отказа также можно управлять программными средствами с помощью Azure PowerShell, Azure CLI и REST API. В приведенных ниже таблицах описан доступный для этого набор команд. Группы отработки отказа включают набор API Azure Resource Manager для управления, включая База данных SQL Azure REST API и командлеты Azure PowerShell. Для этих API требуется использование групп ресурсов и поддержка управления доступом на основе ролей в Azure (Azure RBAC). Дополнительные сведения о том, как реализовать контроль доступа на основе ролей, см. в статье Управление доступом на основе ролей (Azure RBAC).

Командлет Description
New-AzSqlDatabaseFailoverGroup Создает группу отработки отказа и регистрирует ее на основном сервере и сервере-получателе.
Remove-AzSqlDatabaseFailoverGroup Удаляет группу отработки отказа с сервера
Get-AzSqlDatabaseFailoverGroup Извлекает конфигурацию группы отработки отказа
Set-AzSqlDatabaseFailoverGroup Изменяет конфигурацию отказоустойчивого кластера
Switch-AzSqlDatabaseFailoverGroup Запускает отработку отказа группы отработки отказа на сервер-получатель
Add-AzSqlDatabaseToFailoverGroup Добавляет одну или несколько баз данных в группу отработки отказа

Примечание.

Можно развернуть группу отработки отказа в подписках с помощью -PartnerSubscriptionId параметра в Azure PowerShell, начиная с Az.SQL 3.11.0. Дополнительные сведения см. в следующем примере.

Следующие шаги

Общие сведения о параметрах высокой доступности База данных SQL Azure см. в группах геоза реплика и отработки отказа.