종동체 데이터베이스를 사용 하 여 Azure 데이터 탐색기에 데이터베이스 연결Use follower database to attach databases in Azure Data Explorer

종동체 데이터베이스 기능을 사용 하면 다른 클러스터에 있는 데이터베이스를 Azure 데이터 탐색기 클러스터에 연결할 수 있습니다.The follower database feature allows you to attach a database located in a different cluster to your Azure Data Explorer cluster. 종동체 데이터베이스읽기 전용 모드로 연결 되어 데이터를 확인 하 고 리더 데이터베이스로 수집 된 데이터에 대 한 쿼리를 실행할 수 있게 합니다.The follower database is attached in read-only mode, making it possible to view the data and run queries on the data that was ingested into the leader database. 종동체 데이터베이스는 리더 데이터베이스의 변경 내용을 동기화 합니다.The follower database synchronizes changes in the leader databases. 동기화로 인해 데이터 가용성에 몇 초에서 몇 분의 데이터 지연 시간이 있습니다.Due to the synchronization, there's a data lag of a few seconds to a few minutes in data availability. 지연 시간 길이는 리더 데이터베이스 메타 데이터의 전체 크기에 따라 달라 집니다.The length of the time lag depends on the overall size of the leader database metadata. 리더 및 종동체 데이터베이스는 동일한 저장소 계정을 사용 하 여 데이터를 가져옵니다.The leader and follower databases use the same storage account to fetch the data. 저장소는 리더 데이터베이스가 소유 합니다.The storage is owned by the leader database. 종동체 데이터베이스는 데이터를 수집 하지 않고도 데이터를 볼 수 있습니다.The follower database views the data without needing to ingest it. 연결 된 데이터베이스는 읽기 전용 데이터베이스 이므로 캐싱 정책, 보안 주체사용 권한을제외 하 고 데이터베이스의 데이터, 테이블 및 정책을 수정할 수 없습니다.Since the attached database is a read-only database, the data, tables, and policies in the database can't be modified except for caching policy, principals, and permissions. 연결 된 데이터베이스는 삭제할 수 없습니다.Attached databases can't be deleted. 리더가 나 종동체에 의해 분리 되어야 하며, 그런 후에만 삭제할 수 있습니다.They must be detached by the leader or follower and only then they can be deleted.

종동체 기능을 사용 하 여 다른 클러스터에 데이터베이스를 연결 하는 것은 조직과 팀 간에 데이터를 공유 하는 인프라로 사용 됩니다.Attaching a database to a different cluster using the follower capability is used as the infrastructure to share data between organizations and teams. 이 기능은 계산 리소스를 분리 하 여 비프로덕션 사용 사례에서 프로덕션 환경을 보호 하는 데 유용 합니다.The feature is useful to segregate compute resources to protect a production environment from non-production use cases. 종동체를 사용 하 여 데이터에 대 한 쿼리를 실행 하는 파티에 Azure 데이터 탐색기 클러스터의 비용을 연결할 수도 있습니다.Follower can also be used to associate the cost of Azure Data Explorer cluster to the party that runs queries on the data.

어떤 데이터베이스를 팔 로우 합니까?Which databases are followed?

  • 클러스터는 하나의 데이터베이스, 여러 데이터베이스 또는 리더 클러스터의 모든 데이터베이스를 따를 수 있습니다.A cluster can follow one database, several databases, or all databases of a leader cluster.
  • 단일 클러스터는 여러 개의 리더 클러스터에서 데이터베이스를 따라갈 수 있습니다.A single cluster can follow databases from multiple leader clusters.
  • 클러스터에는 종동체 데이터베이스와 리더 데이터베이스가 모두 포함 될 수 있습니다.A cluster can contain both follower databases and leader databases

필수 구성 요소Prerequisites

  1. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.If you don't have an Azure subscription, create a free account before you begin.
  2. 리더 및 종동체에 대 한 클러스터 및 DB를 만듭니다 .Create cluster and DB for the leader and follower.
  3. 수집 개요에 설명 된 다양 한 방법 중 하나를 사용 하 여 데이터를 리더 데이터베이스로 수집 합니다.Ingest data to leader database using one of various methods discussed in ingestion overview.

데이터베이스 연결Attach a database

데이터베이스를 연결 하는 데 사용할 수 있는 여러 가지 방법이 있습니다.There are various methods you can use to attach a database. 이 문서에서는 c #, Python, Powershell 또는 Azure Resource Manager 템플릿을 사용 하 여 데이터베이스를 연결 하는 방법을 설명 합니다.In this article, we discuss attaching a database using C#, Python, Powershell, or an Azure Resource Manager template. 데이터베이스를 연결 하려면 리더 클러스터 및 종동체 클러스터에 대 한 참가자 역할의 사용자, 그룹, 서비스 주체 또는 관리 id가 있어야 합니다.To attach a database, you must have user, group, service principal, or managed identity with at least contributor role on the leader cluster and the follower cluster. Azure Portal, PowerShell, Azure CLIARM 템플릿을사용 하 여 역할 할당을 추가 하거나 제거할 수 있습니다.You can add or remove role assignments using Azure Portal, PowerShell, Azure CLI and ARM template. Azure RBAC (역할 기반 액세스 제어)다른 역할에 대해 자세히 알아볼 수 있습니다.You can learn more about Azure role-based access control (Azure RBAC) and the different roles.

C를 사용 하 여 데이터베이스 연결 #Attach a database using C#

필요한 NugetNeeded NuGets

예제Example

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Application ID
var clientSecret = "xxxxxxxxxxxxxx";//Client secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";

var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(serviceCreds){
    SubscriptionId = followerSubscriptionId
};

var followerResourceGroupName = "followerResouceGroup";
var leaderResourceGroup = "leaderResouceGroup";
var leaderClusterName = "leader";
var followerClusterName = "follower";
var attachedDatabaseConfigurationName = "uniqueNameForAttachedDatabaseConfiguration";
var databaseName = "db"; // Can be specific database name or * for all databases
var defaultPrincipalsModificationKind = "Union"; 
var location = "North Central US";

AttachedDatabaseConfiguration attachedDatabaseConfigurationProperties = new AttachedDatabaseConfiguration()
{
    ClusterResourceId = $"/subscriptions/{leaderSubscriptionId}/resourceGroups/{leaderResourceGroup}/providers/Microsoft.Kusto/Clusters/{leaderClusterName}",
    DatabaseName = databaseName,
    DefaultPrincipalsModificationKind = defaultPrincipalsModificationKind,
    Location = location
};

var attachedDatabaseConfigurations = resourceManagementClient.AttachedDatabaseConfigurations.CreateOrUpdate(followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationName, attachedDatabaseConfigurationProperties);

데이터베이스가 성공적으로 연결 되었는지 확인 합니다.Verify that the database was successfully attached

데이터베이스가 성공적으로 연결 되었는지 확인 하려면 Azure Portal에서 연결 된 데이터베이스를 찾습니다.To verify that the database was successfully attached, find your attached databases in the Azure portal. 데이터베이스를 종동체 또는 리더 클러스터에 성공적으로 연결 되었는지 확인할 수 있습니다.You can verify the databases were successfully attached in either the follower or leader clusters.

종동체 클러스터 확인Check your follower cluster

  1. 종동체 클러스터로 이동 하 고 데이터베이스 를 선택 합니다.Navigate to the follower cluster and select Databases

  2. 데이터베이스 목록에서 새 읽기 전용 데이터베이스를 검색 합니다.Search for new Read-only databases in the database list.

    읽기 전용 종동체 데이터베이스

리더 클러스터 확인Check your leader cluster

  1. 리더 클러스터로 이동 하 고 데이터베이스 를 선택 합니다.Navigate to the leader cluster and select Databases

  2. 관련 데이터베이스가 다른 사용자와 공유 로 표시 되었는지 확인 합니다. > Check that the relevant databases are marked as SHARED WITH OTHERS > Yes

    연결 된 데이터베이스 읽기 및 쓰기

종동체 데이터베이스 분리Detach the follower database

참고

종동체 또는 리더 쪽에서 데이터베이스를 분리 하려면 데이터베이스를 분리 하는 클러스터에 대 한 사용자, 그룹, 서비스 주체 또는 관리 id가 적어도 기여자 역할 이어야 합니다.To detach a database from the follower or leader side, you must have user, group, service principal, or managed identity with at least contributor role on the cluster from which you are detaching the database. 아래 예제에서는 서비스 주체를 사용 합니다.In the example below, we use service principal.

C를 사용 하 여 종동체 클러스터에서 연결 된 종동체 데이터베이스 분리 #Detach the attached follower database from the follower cluster using C#

종동체 클러스터는 연결 된 종동체 데이터베이스를 다음과 같이 분리할 수 있습니다.The follower cluster can detach any attached follower database as follows:

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Application ID
var clientSecret = "xxxxxxxxxxxxxx";//Client secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";

var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(serviceCreds){
    SubscriptionId = followerSubscriptionId
};

var followerResourceGroupName = "testrg";
//The cluster and database that are created as part of the prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "uniqueName";

resourceManagementClient.AttachedDatabaseConfigurations.Delete(followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationsName);

C를 사용 하 여 리더 클러스터에서 연결 된 종동체 데이터베이스 분리 #Detach the attached follower database from the leader cluster using C#

리더 클러스터는 연결 된 모든 데이터베이스를 다음과 같이 분리할 수 있습니다.The leader cluster can detach any attached database as follows:

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Application ID
var clientSecret = "xxxxxxxxxxxxxx";//Client secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";

var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(serviceCreds){
    SubscriptionId = leaderSubscriptionId
};

var leaderResourceGroupName = "testrg";
var followerResourceGroupName = "followerResouceGroup";
var leaderClusterName = "leader";
var followerClusterName = "follower";
//The cluster and database that are created as part of the Prerequisites
var followerDatabaseDefinition = new FollowerDatabaseDefinition()
    {
        AttachedDatabaseConfigurationName = "uniqueName",
        ClusterResourceId = $"/subscriptions/{followerSubscriptionId}/resourceGroups/{followerResourceGroupName}/providers/Microsoft.Kusto/Clusters/{followerClusterName}"
    };

resourceManagementClient.Clusters.DetachFollowerDatabases(leaderResourceGroupName, leaderClusterName, followerDatabaseDefinition);

보안 주체, 권한 및 캐싱 정책 관리Manage principals, permissions, and caching policy

보안 주체 관리Manage principals

데이터베이스를 연결할 때 "기본 보안 주체 수정 종류" 를 지정 합니다.When attaching a database, specify the "default principals modification kind". 기본적으로는 인증 된 보안 주체의 리더 데이터베이스 컬렉션을 유지 합니다.The default is keeping the leader database collection of authorized principals

종류Kind 설명Description
UnionUnion 연결 된 데이터베이스 보안 주체에는 항상 원래 데이터베이스 보안 주체와 종동체 데이터베이스에 추가 된 새 보안 주체가 모두 포함 됩니다.The attached database principals will always include the original database principals plus additional new principals added to the follower database.
바꾸기Replace 원본 데이터베이스의 보안 주체를 상속 하지 않습니다.No inheritance of principals from the original database. 연결 된 데이터베이스에 대 한 새 보안 주체를 만들어야 합니다.New principals must be created for the attached database.
없음None 연결 된 데이터베이스 보안 주체에는 추가 보안 주체가 없는 원래 데이터베이스의 보안 주체만 포함 됩니다.The attached database principals include only the principals of the original database with no additional principals.

제어 명령을 사용 하 여 권한이 부여 된 보안 주체를 구성 하는 방법에 대 한 자세한 내용은 종동체 클러스터를 관리 하기 위한 제어 명령을 참조 하세요.For more information about using control commands to configure the authorized principals, see Control commands for managing a follower cluster.

사용 권한 관리Manage permissions

읽기 전용 데이터베이스 권한을 관리 하는 것은 모든 데이터베이스 유형의 경우와 동일 합니다.Managing read-only database permission is the same as for all database types. Azure Portal에서 관리 권한을참조 하세요.See manage permissions in the Azure portal.

캐싱 정책 구성Configure caching policy

종동체 데이터베이스 관리자는 호스팅 클러스터에서 연결 된 데이터베이스의 캐싱 정책이 나 해당 테이블을 수정할 수 있습니다.The follower database administrator can modify the caching policy of the attached database or any of its tables on the hosting cluster. 기본적으로 데이터베이스 및 테이블 수준 캐싱 정책의 리더 데이터베이스 컬렉션을 유지 합니다.The default is keeping the leader database collection of database and table-level caching policies. 예를 들어 월간 보고를 실행 하기 위해 리더 데이터베이스에 30 일 캐싱 정책을 설정 하 고, 문제 해결을 위해 최신 데이터만 쿼리하려면 종동체 데이터베이스에서 3 일 캐싱 정책을 사용할 수 있습니다.You can, for example, have a 30 day caching policy on the leader database for running monthly reporting and a three day caching policy on the follower database to query only the recent data for troubleshooting. 제어 명령을 사용 하 여 종동체 데이터베이스 또는 테이블에 대 한 캐싱 정책을 구성 하는 방법에 대 한 자세한 내용은 종동체 클러스터를 관리 하기 위한 제어 명령을 참조 하세요.For more information about using control commands to configure the caching policy on the follower database or table, see Control commands for managing a follower cluster.

참고Notes

  • 리더/종동체 클러스터의 데이터베이스 사이에 충돌이 발생 하는 경우 모든 데이터베이스 뒤에 종동체 클러스터가 있으면 다음과 같이 확인 됩니다.If there are conflicts between databases of leader/follower clusters, when all databases are followed by the follower cluster, they are resolved as follows:
    • 종동체 클러스터에 생성 된 DB 라는 데이터베이스가 리더 클러스터에서 생성 된 것과 동일한 이름의 데이터베이스 보다 우선 적용 됩니다.A database named DB created on the follower cluster takes precedence over a database with the same name created on the leader cluster. 따라서 종동체 클러스터의 데이터베이스 db 를 제거 하거나 이름을 바꿔서 종동체 클러스터에서 리더의 데이터베이스 db 를 만들어야 합니다.Therefore, database DB in the follower cluster needs to be removed (or renamed) for the follower cluster to have the leader's database DB.
    • 두 개 이상의 리더 클러스터에서 오는 DB 라는 데이터베이스는 리더 클러스터 중 하나 에서 임의로 선택 되며 두 번 이상 나오지 않습니다.A database named DB followed from two or more leader clusters will be arbitrarily chosen from one of the leader clusters, and will not be followed more than once.
  • 클러스터 작업 로그 및 종동체 클러스터에서 실행 된 기록을 표시 하는 명령은 종동체 클러스터의 작업 및 기록을 표시 하 고 해당 결과 집합에는 리더 클러스터의 작업 및 기록이 포함 되지 않습니다.Commands for showing cluster activity log and history run on a follower cluster will show the activity and history on the follower cluster, and their result sets won't include those of the leader cluster(s).
    • 예를 들어, .show queries 종동체 클러스터에서 실행 되는 명령은 데이터베이스에서 실행 되는 쿼리 및 종동체 클러스터를 표시 하며,이 쿼리는 리더 클러스터의 동일한 데이터베이스에 대해 실행 되지 않습니다.For example: a .show queries command run on the follower cluster will only show queries run on databases followed by follower cluster, and not queries run against the same database in the leader cluster.

제한 사항Limitations

  • 종동체와 리더 클러스터는 동일한 지역에 있어야 합니다.The follower and the leader clusters must be in the same region.
  • 진행 중인 데이터베이스에서는 스트리밍 수집을 사용할 수 없습니다.Streaming ingestion can't be used on a database that is being followed.
  • 고객 관리 키 를 사용 하는 데이터 암호화는 리더가 나 종동체 클러스터에서 지원 되지 않습니다.Data encryption using customer managed keys is not supported on both leader and follower clusters.
  • 분리 하기 전에 다른 클러스터에 연결 된 데이터베이스는 삭제할 수 없습니다.You can't delete a database that is attached to a different cluster before detaching it.
  • 다른 클러스터에 연결 된 데이터베이스를 분리 하기 전에는 해당 클러스터를 삭제할 수 없습니다.You can't delete a cluster that has a database attached to a different cluster before detaching it.

다음 단계Next steps