Uso de base de datos de seguidores
La característica de base de datos del seguidor le permite adjuntar una base de datos ubicada en otro clúster al clúster de Azure Data Explorer. La base de datos del seguidor se adjunta en modo de solo lectura, lo que permite ver los datos y ejecutar consultas en los datos que se han ingerido en la base de datos del responsable. La base de datos del seguidor sincroniza los cambios en las bases de datos del responsable. Debido a la sincronización, hay un retraso de datos que va de unos segundos a unos minutos en la disponibilidad de los datos. La duración del retraso depende del tamaño total de los metadatos de la base de datos del responsable. Las bases de datos del responsable y el seguidor usan la misma cuenta de almacenamiento para capturar los datos. El almacenamiento pertenece a la base de datos del responsable. La base de datos del seguidor ve los datos sin necesidad de ingerirlos. Dado que la base de datos adjunta es de solo lectura, los datos, las tablas y las directivas de la base de datos no se pueden modificar, excepto en el caso de la directiva de almacenamiento en caché, las entidades de seguridad y los permisos. Las bases de datos adjuntas no se pueden eliminar. Para poder eliminarlas, el responsable o el seguidor deben desasociarlas primero.
Se adjunta una base de datos a otro clúster mediante la funcionalidad del seguidor como infraestructura para compartir datos entre organizaciones y equipos. La característica es útil para separar los recursos de proceso a fin de proteger un entorno de producción de los casos de uso que no son de producción. El seguidor también se puede usar para asociar el costo del clúster de Azure Data Explorer a la entidad que ejecuta consultas en los datos.
¿Qué bases de datos se siguen?
- Un clúster puede seguir una base de datos, varias o todas las del clúster del responsable.
- Un solo clúster puede seguir bases de datos de varios clústeres de responsables.
- Un clúster puede contener bases de datos del seguidor y del responsable.
- Los clústeres de EngineV3 solo pueden seguir a clústeres de EngineV3 y, de forma similar, los clústeres de EngineV2 solo pueden seguir clústeres de V2.
Requisitos previos
- Suscripción a Azure. Cree una cuenta de Azure gratuita.
- Un clúster y una base de datos de Azure Data Explorer para el líder y el seguidor. Cree un clúster y una base de datos.
- La base de datos líder debe contener datos. Puede ingerir datos mediante uno de los métodos descritos en introducción a la ingesta.
Adjuntar una base de datos
Puede usar varios métodos para adjuntar una base de datos. En este artículo, se describe cómo conectar una base de datos mediante C#, Python, PowerShell o una plantilla de Azure Resource Manager. Para adjuntar una base de datos, el usuario, el grupo, la entidad de servicio o la identidad administrada debe tener al menos el rol de colaborador en el clúster líder y en el clúster seguidor. Agregue o quite asignaciones de roles mediante Azure Portal, PowerShell, la CLI de Azure y una plantilla de ARM. Más información sobre el control de acceso basado en roles de Azure (Azure RBAC) y los diferentes roles.
Uso compartido de nivel de tabla
Al adjuntar la base de datos, también se siguen todas las tablas, tablas externas y vistas materializadas. Para compartir tablas, tablas externas o vistas materializadas específicas, configure "TableLevelSharingProperties".
'TableLevelSharingProperties' contiene ocho matrices de cadenas: tablesToInclude
, , tablesToExclude
externalTablesToInclude
, externalTablesToExclude
, materializedViewsToInclude
materializedViewsToExclude
, , functionsToInclude
y functionsToExclude
. El número máximo de entradas entre todas las matrices es 100 en total.
Nota
No se admite el uso compartido de nivel de tabla cuando se usa la notación "*" de todas las bases de datos.
Nota
Cuando se incluyen vistas materializadas, también se incluyen sus tablas de origen.
Ejemplos
Incluya todas las tablas. No se necesita el signo '*', ya que se siguen todas las tablas de forma predeterminada:
tablesToInclude = []
Incluya todas las tablas cuyos nombres empiecen por "Logs":
tablesToInclude = ["Logs*"]
Excluya todas las tablas externas:
externalTablesToExclude = ["*"]
Excluya todas las vistas materializadas:
materializedViewsToExclude=["*"]
Invalidación del nombre de la base de datos
Opcionalmente, puede hacer que el nombre de la base de datos en el clúster del seguidor sea diferente del clúster líder. Por ejemplo, puede que desee adjuntar el mismo nombre de base de datos de varios clústeres líderes a un clúster de seguidor. Para especificar un nombre de base de datos diferente, configure la propiedad "DatabaseNameOverride" o "DatabaseNamePrefix".
Adjunción de una base de datos mediante C#
Paquetes NuGet necesarios
- Instalación de Microsoft.Azure.Management.Kusto.
- Instale Microsoft.Rest.ClientRuntime.Azure.Authentication para llevar a cabo la autenticación.
Ejemplo de 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
);
Comprobación de que la base de datos se ha adjuntado correctamente
Para comprobar que la base de datos se ha adjuntado correctamente, busque las bases de datos adjuntas en Azure Portal. Puede comprobar que las bases de datos se han conectado correctamente en los clústeres seguidor o líder.
Comprobación del clúster seguidor
Vaya al clúster del seguidor y seleccione Bases de datos.
En la lista de bases de datos, busque nuevas bases de datos de solo lectura.
También puede ver esta lista en la página de información general de la base de datos:
Comprobación del clúster líder
Vaya al clúster líder y seleccione Bases de datos.
Compruebe que las bases de datos relevantes estén marcadas como COMPARTIDO CON OTROSSí.
Cambie el vínculo de relación para ver los detalles.
También puede verlo en la página de información general de la base de datos:
Desasociación de la base de datos del seguidor
Nota
Para desasociar una base de datos del seguidor o el líder, el usuario, el grupo, la entidad de servicio o la identidad administrada deben tener al menos el rol Colaborador en el clúster del que va a desasociar la base de datos. En el ejemplo anterior, usamos la entidad de servicio.
Desasociación de la base de datos conectada al seguidor desde el clúster seguidor mediante C#**
El clúster seguidor puede desasociar cualquier base de datos conectada de la siguiente manera:
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
);
Desasociación de la base de datos conectada al seguidor desde el clúster líder mediante C#
El clúster del responsable puede desasociar cualquier base de datos adjunta de la siguiente manera:
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
);
Administración de entidades de seguridad, permisos y directiva de almacenamiento en caché
Administración de entidades de seguridad
Al adjuntar una base de datos, especifique el valor del "tipo de modificación de las entidades de seguridad predeterminadas" . El valor predeterminado es combinar las entidades de seguridad autorizadas de invalidación con la colección de bases de datos líder de entidades de seguridad autorizadas.
Variante | Descripción |
---|---|
Unión | Las entidades de seguridad de las bases de datos conectadas incluirán siempre las entidades de seguridad de las bases de datos originales, además de otras nuevas entidades de seguridad agregadas a la base de datos del seguidor. |
Sustituya | No se heredan las entidades de seguridad de la base de datos original. Se deben crear nuevas entidades de seguridad para la base de datos adjunta. |
None | Las entidades de seguridad de las bases de datos conectadas incluyen solo las entidades de seguridad de la base de datos original sin otras entidades de seguridad. |
Para obtener más información sobre el uso de comandos de control para configurar las entidades de seguridad autorizadas, vea Comandos de control para administrar el clúster de un seguidor.
Administración de permisos
La administración de los permisos de bases de datos de solo lectura es igual que para todos los tipos de base de datos. Vea Administración de permisos en Azure Portal.
Configuración de la directiva de almacenamiento en caché
El administrador de la base de datos del seguidor puede modificar la directiva de almacenamiento en caché de la base de datos adjunta o de cualquiera de sus tablas en el clúster de hospedaje. El valor predeterminado es combinar la base de datos de origen en la base de datos del clúster líder y las directivas de almacenamiento en caché en el nivel de tabla con las directivas definidas en la base de datos y las directivas de invalidación en el nivel de tabla. Por ejemplo, puede tener una directiva de almacenamiento en caché de 30 días en la base de datos del responsable para realizar informes mensuales y una directiva de almacenamiento en caché de tres días en la base de datos del seguidor para consultar solo los datos recientes si necesita solucionar problemas. Para obtener más información sobre el uso de comandos de control para configurar la directiva de almacenamiento en caché en la tabla o la base de datos del seguidor, vea Comandos de control para administrar el clúster de un seguidor.
Notas
- Si hay conflictos entre las bases de datos de los clústeres líderes y los seguidores, cuando el clúster seguidor sigue todas las bases de datos, se resuelven de la siguiente manera:
- Una base de datos llamada DB creada en el clúster seguidor tiene prioridad sobre una base de datos con el mismo nombre creada en el clúster líder. Este es el motivo por el que se debe quitar o cambiar el nombre de la base de datos DB en el clúster seguidor para que el clúster seguidor incluya la base de datos DB del líder.
- Una base de datos llamada DB que es seguida desde dos o más clústeres líderes se elegirá arbitrariamente desde uno de los clústeres líderes y no se seguirá más de una vez.
- Los comandos para mostrar el registro de actividad y el historial del clúster que se ejecutan en un clúster seguidor mostrarán la actividad y el historial del clúster seguidor, y sus conjuntos de resultados no incluirán los resultados del clúster o clústeres líder.
- Por ejemplo: un comando
.show queries
que se ejecuta en el clúster seguidor solo mostrará las consultas que se ejecutan en las bases de datos seguidas por el clúster seguidor y no mostrará las consultas que se ejecutan en la misma base de datos del clúster líder.
- Por ejemplo: un comando
Limitaciones
- Los clústeres del seguidor y el responsable deben estar en la misma región.
- Si la ingesta de streaming se usa en una base de datos que se está siguiendo, el clúster del seguidor debe estar habilitado para la ingesta de streaming para permitir el seguimiento de los datos de esta.
- El cifrado de datos con claves administradas por el cliente no se admite en el clúster líder ni en los seguidores.
- No puede eliminar una base de datos que esté asociada a otro clúster antes de desasociarla.
- No puede eliminar un clúster que tenga una base de datos asociada a otro clúster antes de desasociarla.
- Las propiedades del uso compartido de nivel de tabla no se admiten cuando se siguen todas las bases de datos.
Pasos siguientes
- Para obtener información sobre la configuración del clúster del seguidor, consulte Comandos de control para administrar el clúster de un seguidor.