Что такое автономная группа доступности?

Область применения: SQL Server 2022 (16.x)

Содержащаяся группа доступности — это группа доступности AlwaysOn, которая поддерживает:

  • управление объектами метаданных (пользователями, именами входа, разрешениями, заданиями агента SQL и т. д.) на уровне группы доступности в дополнение к уровню экземпляра.

  • специализированные системные базы данных в группе доступности.

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

Обзор

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

Такой метод хорошо подходит для приложений, которые взаимодействуют только с этим набором пользовательских баз данных, но возникают проблемы, когда приложения также полагаются на такие объекты, как пользователи, имена входа, разрешения, задания агентов и т. д., хранящиеся в одной из системных баз данных (master или msdb). Чтобы приложения функционировали гладко и прогнозируемо, администратор должен вручную убедиться, что любое изменение этих объектов дублируется во всех реплика экземплярах группы доступности. Если новый экземпляр входит в группу доступности, базы данных можно автоматически или вручную заполнять простым процессом, но все настройки системной базы данных должны быть перенастроены на новом экземпляре, чтобы соответствовать другим реплика.

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

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

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

Differences

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

Автономные системные базы данных

Каждая содержащаяся группа доступности имеет собственные master и msdb системные базы данных с именем группы доступности. Например, в автономной группе доступности MyContainedAGесть базы данных с именем MyContainedAG_master и MyContainedAG_msdb. Эти системные базы данных автоматически заполняются новыми репликами, а обновления реплицируются в эти базы данных точно так же, как и в любую другую базу данных в группе доступности. Это означает, что при добавлении объекта, например имени входа или задания агента при подключении к автономной группе доступности, при отработке отказа автономной группы доступности на другой экземпляр, подключении к автономной группе доступности вы по-прежнему видите задания агента и сможете пройти проверку подлинности с помощью имени входа, созданного в автономной группе доступности.

Важно!

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

Системные базы данных в созданной группе доступности не копируются из экземпляра, в котором CREATE AVAILABILITY GROUP выполняется команда. Изначально они являются пустыми шаблонами без каких-либо данных. Сразу после создания учетные записи администратора на экземпляре, создав содержащую группу доступности, копируются в содержащуюся группу доступности master. Таким образом администратор может войти в содержащую группу доступности и настроить остальную часть конфигурации. При создании локальных пользователей или конфигураций в экземпляре они не отображаются автоматически при создании автономных системных баз данных, и они не отображаются при подключении к автономной группе доступности. Необходимо вручную повторно создать их в автономных системных базах данных в контексте автономной группы доступности. Исключением является то, что все имена входа в роли sysadmin в родительском экземпляре копируются в новую базу данных группы доступности master .

Восстановление автономной системной базы данных

Вы можете восстановить содержащуюся системную базу данных с помощью одного из двух разных способов.

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

    1. Восстановите содержащиеся master и msdb базы данных на экземпляре сервера, на котором размещается вторичный реплика, используя RESTORE WITH NORECOVERY для каждой операции восстановления. Дополнительные сведения см. в статье "Подготовка базы данных-получателя для группы доступности AlwaysOn".

    2. Присоединение каждой автономной базы данных к группе доступности. Дополнительные сведения см. в разделе "Присоединение базы данных-получателя к группе доступности AlwaysOn".

  • Восстановление автономной базы данных путем удаления автономной группы доступности:

    1. Удалите содержащуюся группу доступности.

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

    3. Повторно создайте содержащую группу доступности с помощью исходных узлов и имен, используя WITH (CONTAINED, REUSE_SYSTEM_DATABASES) синтаксис.

Подключение (содержащаяся среда)

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

"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=MyContainedDatabase;
Server=MyServer;"

Где MyContainedDatabase находится база данных в автономной группе доступности, с которой вы хотите взаимодействовать.

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

Например, если ваша группа MyContainedAG доступности размещается на сервере SERVER\MSSQLSERVER, а не подключается к прослушивателю MyContainedAG_Listener, подключитесь к экземпляру, SERVER\MSSQLSERVERвы находитесь в среде экземпляра, а не в среде MyContainedAG. Это означает, что вы подвергаетесь содержимому (пользователям, разрешениям, заданиям и т. д.), которые находятся в системных базах данных экземпляра. Чтобы получить доступ к содержимому, найденном в автономных системных базах данных автономной группы доступности, подключитесь к содержащемуся прослушивателю группы доступности (MyContainedAG_Listenerнапример, например). При подключении к экземпляру через прослушиватель автономной группы доступности при взаимодействии masterвы фактически перенаправляетесь в содержащуюся master базу данных (например, MyContainedAG_master).

Маршрутизация только для чтения и автономные группы доступности

Если вы настраиваете маршрутизацию только для чтения для перенаправления подключений с намерением чтения на дополнительный реплика (см. раздел "Настройка маршрутизации только для чтения для группы доступности AlwaysOn") и вы хотите подключиться только с помощью имени входа, созданного только в автономной группе доступности, есть некоторые дополнительные рекомендации.

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

Например, в приведенной ниже строка подключения, где AdventureWorks находится база данных в автономной группе доступности, где находится пользователь, определенный в автономной группе доступностиMyContainedListener, и MyUser ни один из участвующих экземпляров:

"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=AdventureWorks;
Server=MyContainedListener;
ApplicationIntent=ReadOnly"

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

Различия между подключением к экземпляру и подключением к автономной группе доступности

  • При подключении к автономной группе доступности пользователи видят только базы данных в автономной группе доступности, а также tempdb.
  • На уровне экземпляра содержится [contained AG]_masterгруппа доступности master и msdb имена, а также [contained AG]_msdb. Внутри автономной группы доступности их имена master и msdb.
  • Идентификатор базы данных для автономной группы доступности находится 1 внутри автономной группы доступностиmaster, но что-то другое при подключении к экземпляру.
  • Хотя пользователи не видят базы данных за пределами автономной группы доступности при подключении к автономному подключению группы доступности sys.databases , они могут получить доступ к этим базам данных по имени трех частей или с помощью USE команды.
  • Конфигурацию сервера можно считывать из автономного подключения группы доступности sp_configure , но можно записывать только с уровня экземпляра.
  • Из содержащихся подключений группы доступности sysadmin может выполнять операции уровня экземпляра, такие как завершение работы SQL Server.
  • Большинство операций уровня базы данных, конечной точки или уровня доступности могут выполняться только из подключений экземпляров, а не содержащих подключений группы доступности.

Взаимодействие с другими функциями

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

Не поддерживается

В настоящее время следующие функции SQL Server не поддерживаются в автономной группе доступности:

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

система отслеживания измененных данных

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

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

доставка журналов;

Доставку журналов можно настроить, если исходная база данных находится в автономной группе доступности. Однако целевой объект доставки журналов не поддерживается в автономной группе доступности. Кроме того, есть дополнительный шаг для изменения задания доставки журналов после настройки CDC.

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

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

Прозрачное шифрование данных (TDE)

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

Базы данных, использующие TDE, применяют сертификаты в базе данных master для расшифровки ключа шифрования базы данных (DEK). Без этого сертификата SQL Server не может расшифровывать базы данных, зашифрованные с помощью TDE, или использовать их в сети. В автономной группе доступности SQL Server проверка обе master базы данных для dmK, master базы данных для экземпляра и автономной master базы данных в автономной группе доступности для расшифровки базы данных. Если сертификат не удается найти в любом расположении, SQL Server не сможет подключить базу данных в режим "в сети".

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

Пакеты SSIS и планы обслуживания

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

Изменения DDL

Единственные изменения DDL находятся в CREATE AVAILABILITY GROUP рабочем процессе. Существует два новых WITH предложения:

<with_option_spec> ::=
CONTAINED |
REUSE_SYSTEM_DATABASES

СОДЕРЖАЩИЕСЯ

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

REUSE_SYSTEM_DATABASES

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

Изменения в динамическом административном представлении

Существует два дополнения к динамическим представлениям, связанным с содержащимися AG:

  • DmV sys.dm_exec_sessions содержит добавленный столбец: contained_availability_group_id
  • В sys.availability_groups представлении каталога есть добавленный столбец: is_contained