Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция базы данных подписчика позволяет подключить базу данных, расположенную в другом кластере в кластере Azure Data Explorer. База данных последователей подключена в режиме только для чтения, что позволяет просматривать данные и выполнять запросы к данным, которые были загружены в базу данных лидера. База данных подписчика синхронизирует изменения в базах данных лидера. Из-за синхронизации данных возможны задержки доступа к данным продолжительностью от нескольких секунд до нескольких минут. Длина задержки времени зависит от общего размера метаданных базы данных лидера. Базы данных лидера и подписчика используют ту же учетную запись хранения для получения данных. Хранилище принадлежит базе данных лидера. База данных подписчиков имеет доступ к данным без необходимости импорта данных. Так как присоединенная база данных — это база данных, доступная только для чтения, данные, таблицы и политики в базе данных не могут быть изменены, за исключением политики кэширования, субъектов и разрешений. Не удается удалить присоединенные базы данных. Они должны быть отсоединены лидером или ведомым, и только тогда их можно удалить.
Присоединение базы данных к другому кластеру с помощью возможности подписчика используется в качестве инфраструктуры для обмена данными между организациями и командами. Эта функция полезна для разделения вычислительных ресурсов для защиты рабочей среды от непроизводственных вариантов использования. Подписчика также можно использовать для связывания стоимости кластера Azure Data Explorer со стороной, которая выполняет запросы к данным.
Какие базы данных отслеживаются?
- Кластер может следовать одной базе данных, нескольким базам данных или всем базам данных кластера лидеров.
- Один кластер может следовать базам данных из нескольких кластеров лидеров.
- Кластер может содержать как базы данных подписчиков, так и базы данных лидеров.
- Кластеры EngineV3 могут следовать только за кластерами EngineV3, аналогично, кластеры EngineV2 могут следовать только за кластерами V2.
Предпосылки
- Подписка Azure. Создайте бесплатную учетную запись Azure.
- Кластер и база данных Azure Data Explorer для лидера и подписчика. Создайте кластер и базу данных.
- База данных лидера должна содержать данные. Вы можете получать данные с помощью одного из методов, рассмотренных в обзоре загрузки.
Присоединение базы данных
Существуют различные методы, которые можно использовать для подключения базы данных. В этой статье мы обсудим присоединение базы данных с помощью C#, Python, PowerShell или шаблона Azure Resource Manager. Чтобы подключить базу данных, необходимо иметь пользователя, группу, сервисный принципал или управляемое удостоверение с как минимум ролью участника в передающем кластере и принимающем кластере. Добавление или удаление назначений ролей с помощью портала Azure, PowerShell, Azure CLI и шаблона ARM. Узнайте больше о управлении доступом на основе ролей Azure (Azure RBAC) и различных ролях.
Общий доступ на уровне таблицы
При присоединении базы данных все таблицы, внешние таблицы и материализованные представления также включаются. Вы можете совместно использовать определенные таблицы, внешние таблицы и материализованные представления, настроив tableLevelSharingProperties.
TableLevelSharingProperties содержит восемь массивов строк: tablesToInclude
, tablesToExclude
, externalTablesToInclude
, materializedViewsToExclude
functionsToInclude
externalTablesToExclude
materializedViewsToInclude
и .functionsToExclude
Максимальное количество записей во всех массивах составляет 100.
Примечание.
Доступ на уровне таблиц не поддерживается при использовании нотации всех баз данных "*".
Примечание.
Если материализованные представления включены, их исходные таблицы также включаются.
Примеры
Включите все таблицы. Нет необходимости в "*", так как за всеми таблицами следует по умолчанию:
tablesToInclude = []
Включите все таблицы, имена которых начинаются с "Журналы":
tablesToInclude = ["Logs*"]
Исключите все внешние таблицы:
externalTablesToExclude = ["*"]
Исключите все материализованные представления:
materializedViewsToExclude=["*"]
Переопределение имени базы данных
При необходимости можно сделать имя базы данных в кластере подписчиков отличается от кластера лидеров. Например, может потребоваться присоединить одно и то же имя базы данных из нескольких кластеров лидеров к кластеру подписчиков. Чтобы указать другое имя базы данных, настройте свойство DatabaseNameOverride или DatabaseNamePrefix.
Присоединение базы данных с помощью C#
Обязательные пакеты NuGet
- Установите Microsoft.Azure.Management.Kusto.
- Установите Microsoft.Rest.ClientRuntime.Azure.Authentication для проверки подлинности.
Пример C#
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(credentials) { SubscriptionId = followerSubscriptionId };
var followerResourceGroupName = "followerResourceGroup";
var followerClusterName = "follower";
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration"
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var leaderResourceGroup = "leaderResourceGroup";
var leaderClusterName = "leader";
var attachedDatabaseConfigurationData = new AttachedDatabaseConfiguration
{
ClusterResourceId = $"/subscriptions/{leaderSubscriptionId}/resourceGroups/{leaderResourceGroup}/providers/Microsoft.Kusto/Clusters/{leaderClusterName}",
DatabaseName = "<databaseName>", // Can be specific database name or * for all databases
DefaultPrincipalsModificationKind = "Union",
Location = "North Central US"
};
// Table level sharing properties are not supported when using '*' all databases notation.
if (attachedDatabaseConfigurationData.DatabaseName != "*")
{
// Set up the table level sharing properties - the following is just an example.
attachedDatabaseConfigurationData.TableLevelSharingProperties = new TableLevelSharingProperties(
tablesToInclude:new List<string> { "table1" },
tablesToExclude:new List<string> { "table2" },
externalTablesToInclude:new List<string> { "exTable1" },
externalTablesToExclude:new List<string> { "exTable2" },
materializedViewsToInclude:new List<string> { "matTable1" },
materializedViewsToExclude:new List<string> { "matTable2" }
);
}
await resourceManagementClient.AttachedDatabaseConfigurations.CreateOrUpdateAsync(
followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationName, attachedDatabaseConfigurationData
);
Убедитесь, что база данных успешно подключена
Чтобы убедиться, что база данных успешно подключена, найдите ваши подключенные базы данных на портале Azure. Вы можете убедиться, что базы данных успешно подключены в кластерах подписчиков или лидеров .
Проверка кластера подписчиков
Перейдите к кластеру фолловеров и выберите базы данных.
В списке баз данных найдите новые базы данных только для чтения.
Вы также можете просмотреть этот список на странице обзора базы данных:
Проверка кластера лидеров
Перейдите к кластеру лидеров и выберите базы данных
Убедитесь, что соответствующие базы данных помечены как SHARED WITH OTHERS>Yes
Переключите ссылку на связь для просмотра сведений.
Вы также можете просмотреть это на странице обзора базы данных:
Отключение базы данных подписчика
Примечание.
Чтобы отключить базу данных от подписчика или лидера, необходимо иметь пользователя, группу, субъект-службу или управляемое удостоверение с по крайней мере ролью участника в кластере, из которого вы отсоединяете базу данных. В приведенном ниже примере мы используем основной объект службы.
Отсоедините присоединенную базу данных подписчика от кластера подписчиков с помощью C#**
Кластер подписчиков может отсоединить любую присоединенную базу данных подписчика следующим образом:
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(credentials) { SubscriptionId = followerSubscriptionId };
var followerResourceGroupName = "testrg";
//The cluster and database attached database configuration are created as part of the prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "attachedDatabaseConfiguration";
await resourceManagementClient.AttachedDatabaseConfigurations.DeleteAsync(
followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationsName
);
Отключение подключенной базы данных подписчика от кластера лидеров с помощью C#
Кластер лидеров может отсоединить любую присоединенную базу данных следующим образом:
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(credentials) { SubscriptionId = leaderSubscriptionId };
var leaderResourceGroupName = "testrg";
var leaderClusterName = "leader";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerResourceGroupName = "followerResourceGroup";
//The cluster and attached database configuration that are created as part of the Prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "attachedDatabaseConfiguration";
var followerDatabaseDefinition = new FollowerDatabaseDefinition
{
ClusterResourceId = $"/subscriptions/{followerSubscriptionId}/resourceGroups/{followerResourceGroupName}/providers/Microsoft.Kusto/Clusters/{followerClusterName}",
AttachedDatabaseConfigurationName = attachedDatabaseConfigurationsName
};
await resourceManagementClient.Clusters.DetachFollowerDatabasesAsync(
leaderResourceGroupName, leaderClusterName, followerDatabaseDefinition
);
Управляйте принципами, разрешениями и политикой кэширования
Управление субъектами
При присоединении базы данных укажите тип изменения субъектов по умолчанию. По умолчанию объединяются переопределенные авторизованные субъекты с коллекцией базы данных ведущего авторизованных субъектов
Тип | Описание |
---|---|
Союз | Присоединенные субъекты базы данных всегда будут включать исходные субъекты базы данных, а также другие новые субъекты, добавленные в базу данных подписчика. |
Заменять | Отсутствие наследования принципалов из исходной базы данных. Для подключенной базы данных необходимо создать новые учетные записи. |
Никакой | Присоединенные субъекты базы данных включают только субъекты исходной базы данных без других субъектов. |
Дополнительные сведения об использовании команд управления для настройки авторизованных субъектов см. в командах управления для управления ведомым кластером.
Управление разрешениями
Управление разрешением базы данных только для чтения совпадает со всеми типами баз данных. См. управление разрешениями на портале Azure.
Настройка политики кэширования
Администратор базы данных последователя может изменить политику кэширования подключенной базы данных или любой из ее таблиц в хостинг-кластере. По умолчанию предполагается комбинирование базы данных-источника в базе данных кластера лидера с политиками кэширования на уровне таблицы и с политиками, определенными в политиках переопределения на уровне базы данных и таблицы. Например, можно использовать политику кэширования 30 дней в базе данных лидера для выполнения ежемесячных отчетов и трехдневной политики кэширования в базе данных подписчиков, чтобы запросить только последние данные для устранения неполадок. Дополнительные сведения об использовании команд управления для настройки политики кэширования в базе данных подписчика или таблице см. в разделе "Команды управления" для управления кластером последователей.
Примечания.
- Если между базами данных лидеров и кластеров последователей возникают конфликты, когда за всеми базами данных следует кластер последователей, они разрешаются следующим образом:
- База данных с именем DB , созданная в кластере последователей, имеет приоритет над базой данных с тем же именем, которое было создано в кластере лидеров. Именно поэтому базу данных DB в кластере подписчиков необходимо удалить или переименовать, чтобы кластер подписчиков мог включить базу данных DB лидера.
- База данных с именем DB, которая отслеживается из двух или более кластеров лидеров, будет произвольно выбрана из одного из кластеров лидеров и не будет следоваться более одного раза.
- Команды для отображения журнала активности кластера и истории, выполняемые в ведомом кластере, покажут активность и историю в этом ведомом кластере, а их результирующие наборы не будут включать результаты ведущего кластера или кластеров.
- Например, команда
.show queries
, выполняемая в кластере подписчиков, будет отображать только запросы, выполняемые в базах данных, за которыми следует кластер подписчиков, а не запросы к той же базе данных в кластере лидеров.
- Например, команда
Ограничения
- Подписчики и кластеры лидеров должны находиться в одном регионе.
- Если в базе данных, которая отслеживается, используется потоковое поглощение, кластер-подписчик должен быть включен для потокового поглощения, чтобы обеспечить отслеживание данных потокового поглощения.
- Шифрование данных с помощью управляемых клиентом ключей не поддерживается как в кластерах лидеров, так и для подписчиков.
- Нельзя удалить базу данных, пока она подключена к другому кластеру; сначала её нужно отключить.
- Вы не можете удалить кластер с базой данных, подключенной к другому кластеру, прежде чем отсоединять его.
- Свойства общего доступа на уровне таблицы не поддерживаются при использовании со всеми базами данных.
Дальнейшие действия
- Сведения о конфигурации кластера подписчиков см. в разделе "Управление командами" для управления кластером подписчиков.