Compartir a través de


Uso de bases de datos de seguidor

La característica de base de datos del seguidor permite adjuntar una base de datos ubicada en un clúster diferente 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 líder. 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 principal. La base de datos del seguidor ve los datos sin necesidad de ingerirlos. Dado que la base de datos adjunta es una base de datos de solo lectura, los datos, las tablas y las directivas de la base de datos no se pueden modificar, excepto la directiva de almacenamiento en caché, las entidades de seguridad y lospermisos. Las bases de datos adjuntas no se pueden eliminar. Deben ser desasociados por el líder o el seguidor y solo entonces se pueden eliminar.

La asociación de una base de datos a un clúster diferente mediante la funcionalidad del seguidor se usa como infraestructura para compartir datos entre organizaciones y equipos. La característica es útil para separar los recursos de proceso para proteger un entorno de producción frente a 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 bases de datos o todas las bases de datos de un clúster líder.
  • Un único clúster puede seguir las bases de datos de varios clústeres líderes.
  • Un clúster puede contener bases de datos de seguidor y bases de datos líderes.
  • 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.

Prerrequisitos

Adjuntar una base de datos

Hay varios métodos que puede usar para adjuntar una base de datos. En este artículo se describe cómo adjuntar una base de datos mediante C#, Python, PowerShell o una plantilla de Azure Resource Manager. Para adjuntar una base de datos, debe tener una identidad de usuario, grupo, entidad de servicio o identidad administrada con al menos el rol de colaborador en el clúster líder y el clúster del seguidor. Agregue o quite asignaciones de roles mediante Azure Portal, PowerShell, la CLI de Azure y la plantilla de ARM. Obtenga más información sobre el control de acceso basado en roles (RBAC de Azure) y los distintos roles.

Uso compartido de nivel de tabla

Al adjuntar la base de datos, se siguen también todas las tablas, las tablas externas y las vistas materializadas. Puede compartir tablas específicas, tablas externas o vistas materializadas mediante la configuración de "TableLevelSharingProperties".

'TableLevelSharingProperties' contiene ocho matrices de cadenas: tablesToInclude, , tablesToExcludeexternalTablesToInclude, externalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, , functionsToIncludey functionsToExclude. El número máximo de entradas en todas las matrices es 100.

Nota:

No se admite el uso compartido a nivel de tabla al usar la notación '*' para todas las bases de datos.

Nota:

Cuando se incluyen vistas materializadas, también se incluyen sus tablas de origen.

Ejemplos

  1. Incluya todas las tablas. No se necesita '*', ya que todas las tablas van seguidas de forma predeterminada:

    tablesToInclude = []
    
  2. Incluya todas las tablas con nombres que empiecen por "Logs":

    tablesToInclude = ["Logs*"]
    
  3. Excluir todas las tablas externas:

    externalTablesToExclude = ["*"]
    
  4. Excluir 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 asociar 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".

Adjuntar una base de datos mediante C#

Paquetes NuGet necesarios

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 adjuntó correctamente

Para comprobar que la base de datos se adjuntó correctamente, busque las bases de datos adjuntas en Azure Portal. Puede comprobar que las bases de datos se adjuntaron correctamente en los clústeres de seguimiento o líder .

Comprueba tu clúster de seguidores

  1. Vaya al clúster del seguidor y seleccione Bases de datos.

  2. En la lista de bases de datos, busque nuevas bases de datos de solo lectura.

    Captura de pantalla de las bases de datos de solo lectura de seguidores en el portal.

    También puede ver esta lista en la página de información general de la base de datos:

    Captura de pantalla de la página de información general de bases de datos con la lista de clústeres de seguidor.

Revisa tu clúster líder

  1. Vaya al clúster líder y seleccione Bases de datos.

  2. Compruebe que las bases de datos pertinentes están marcadas como SHARED WITH OTHERS>

  3. Cambie el vínculo de relación para ver los detalles.

    Captura de pantalla de las bases de datos compartidas con otros usuarios para comprobar el clúster líder.

    También puede verlo en la página de información general de la base de datos:

    Captura de pantalla de información general con la lista de bases de datos compartidas con otros usuarios.

Desconectar la base de datos secundaria

Nota:

Para separar una base de datos del lado del seguidor o líder, debe tener un usuario, grupo, principal de servicio o identidad administrada con al menos el rol de colaborador en el clúster del que está separando la base de datos. En el ejemplo siguiente, usamos el principal de servicio.

Desasocie la base de datos del seguidor adjunta del clúster del seguidor mediante C#**

El clúster del seguidor puede desasociar cualquier base de datos de seguidor 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 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 de seguidor adjunta del clúster líder mediante C#

El clúster líder 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
);

Administrar principales, permisos y directiva de almacenamiento en caché

Administrar principales

Al adjuntar una base de datos, especifique el tipo de modificación de principales predeterminados. 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.

Tipo Descripción
Unión Las entidades de seguridad de base de datos adjuntas siempre incluirán las entidades de seguridad de base de datos originales más otras nuevas entidades de seguridad agregadas a la base de datos del seguidor.
reemplazar No hay herencia de principales de la base de datos original. Se deben crear nuevos principales para la base de datos adjunta.
Ninguno Las entidades de seguridad de base de datos adjuntas 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 los principales autorizados, consulte Comandos de control para administrar un clúster seguidor.

Administración de permisos

La administración del permiso de base de datos de solo lectura es la misma que para todos los tipos de base de datos. Consulte Administración de permisos en Azure Portal.

Configuración de la directiva de almacenamiento en caché

El administrador de bases de datos del seguidor puede modificar la directiva de almacenamiento en caché de la base de datos adjunta o 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 de clúster líder y las directivas de almacenamiento en caché de nivel de tabla con las directivas definidas en la base de datos y las directivas de invalidación de nivel de tabla. Por ejemplo, puede tener una directiva de almacenamiento en caché de 30 días en la base de datos líder para ejecutar 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 para 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 base de datos o tabla del seguidor, consulte Comandos de control para administrar un clúster de seguidor.

Notas

  • Si hay conflictos entre bases de datos de clústeres de líder y seguidor, cuando todas las bases de datos son seguidas por el clúster de seguidor, se resuelven de la siguiente manera:
    • Una base de datos denominada DB creada en el clúster del seguidor tiene prioridad sobre una base de datos con el mismo nombre que se creó en el clúster líder. Por eso, la base de datos DB en el clúster del seguidor debe ser eliminada o renombrada para que el clúster del seguidor pueda incluir la base de datos DB del líder.
    • Una base de datos denominada DB seguida de dos o más clústeres líderes se elegirá arbitrariamente de uno de los clústeres líderes y no se seguirá más de una vez.
  • Los comandos para mostrar el registro de actividad del clúster y el historial que se ejecutan en un clúster de seguidor mostrarán la actividad y el historial en el clúster del seguidor, y sus conjuntos de resultados no incluirán esos resultados del clúster o clúster líder.
    • Por ejemplo: un comando .show queries ejecutado 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 las consultas que se ejecutan en la misma base de datos en el clúster líder.

Limitaciones

  • Los clústeres seguidores y líderes deben estar en la misma región.
  • Si se utiliza la ingesta de streaming en una base de datos que se está siguiendo, se debe habilitar el clúster del seguidor para la ingesta de streaming y permitir así que siga los datos de dicha ingesta.
  • El cifrado de datos mediante claves administradas por el cliente no se admite en los clústeres líder y seguidor.
  • No se puede eliminar una base de datos asociada a un clúster diferente antes de desasociarla.
  • No se puede eliminar un clúster que tenga una base de datos asociada a otro clúster antes de desasociarlo.
  • Las propiedades de uso compartido a nivel de tabla no son compatibles al seguir todas las bases de datos.

Pasos siguientes