Share via


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

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, , tablesToExcludeexternalTablesToInclude, externalTablesToExclude, materializedViewsToIncludematerializedViewsToExclude, , functionsToIncludey 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

  1. Incluya todas las tablas. No se necesita el signo '*', ya que se siguen todas las tablas de forma predeterminada:

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

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

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

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

  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 del seguidor de solo lectura 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 seguidores.

Comprobación del clúster líder

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

  2. Compruebe que las bases de datos relevantes estén marcadas como COMPARTIDO CON OTROS.

  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.

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.

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