중요합니다
이 기능은 다음 지역의 공개 미리 보기에 있습니다. westuswestus2eastuseastus2centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindiasoutheastasiauksouth
이 페이지에서는 자식 인스턴스를 사용하여 데이터를 복원하고 Lakebase 데이터베이스 인스턴스에서 시간 여행을 수행하는 방법을 설명합니다.
자식 인스턴스는 언제 만들어야 하나요?
자식 인스턴스를 만드는 것은 다음 시나리오에서 유용합니다.
- 실수로 인한 데이터 손실 복구: 중요 테이블이 어제 오전 10시 23분에 삭제된 경우 오전 10시 22분으로 설정된 자식 인스턴스를 생성하여 누락된 데이터만 추출하고 다시 병합할 수 있습니다.
- 테스트 및 QA 환경: 복원 창에서 정의한 대로 지난 X일의 모든 지점에서 프로덕션과 유사한 환경을 복제하여 스키마 변경 내용의 유효성을 검사하거나 통합 테스트를 실행합니다.
- 준수 및 감사: 내부 감사, 재무 조정 또는 법의학 분석을 위해 지난 날짜에 데이터베이스 상태를 반영하는 자식 인스턴스를 프로비전합니다.
자식 인스턴스란?
자식 인스턴스는 원래 데이터베이스 인스턴스의 쓰기 복사 복제본입니다. 현재 시점 또는 복원 창 내의 기록 지정 시간에서 만들 수 있습니다. 복원 기간은 지정 시간 복구를 수행할 수 있는 시간 범위(2~35일)를 지정합니다. 데이터베이스 인스턴스를 만들 때 복원 창이 정의됩니다. 수동 스냅샷 또는 전체 데이터베이스 내보내기를 기다리지 않고 이 복원 창 내의 모든 지점에서 자식 인스턴스를 만들 수 있습니다.
자식 인스턴스를 만든 후에는 삭제될 때까지 쿼리에 사용할 수 있습니다. 부모의 복원 창에 연결된 자동 만료는 없습니다. 이렇게 하면 부모의 복원 창이 만료된 경우에도 자식 인스턴스가 만들어진 지정 시간 데이터에 항상 액세스할 수 있습니다.
자식 인스턴스는 부모 인스턴스와 격리됩니다. 자식 인스턴스에서 수행하는 모든 읽기 또는 쓰기는 원본 인스턴스에 영향을 주지 않습니다. 자식 인스턴스에서 수정한 내용은 쓰기에 복사를 사용하므로 변경 내용은 "델타"로 저장됩니다. 이렇게 하면 수정되지 않은 데이터가 공유되고 추가 스토리지가 최소화됩니다.
시간 이동 및 복원 데이터에 대한 자식 인스턴스 만들기
자식 인스턴스를 만드는 것은 다음 시나리오에서 유용합니다.
- 실수로 인한 데이터 손실 복구: 중요 테이블이 어제 오전 10시 23분에 삭제된 경우 오전 10시 22분으로 설정된 자식 인스턴스를 생성하여 누락된 데이터만 추출하고 다시 병합할 수 있습니다.
- 테스트 및 QA 환경: 복원 창에서 정의한 대로 지난 X일의 모든 지점에서 프로덕션과 유사한 환경을 복제하여 스키마 변경 내용의 유효성을 검사하거나 통합 테스트를 실행합니다.
- 준수 및 감사: 내부 감사, 재무 조정 또는 법의학 분석을 위해 지난 날짜에 데이터베이스 상태를 반영하는 자식 인스턴스를 프로비전합니다.
단계별 지침
1단계: (선택 사항) 부모 데이터베이스 인스턴스에서 복원 창 구성
복원 창의 유효한 값은 2~35일 사이입니다. 기본 기간은 7일입니다. 인스턴스를 만들 때 데이터베이스 인스턴스에 복원 창을 지정할 수 있습니다. 데이터베이스 인스턴스 만들기를 참조하세요.
UI 또는 API를 사용하여 데이터베이스 인스턴스의 복원 창을 수정합니다.
사용자 인터페이스 (UI)
- 작업 영역 사이드바에서 컴퓨팅을 클릭합니다.
- Lakebase 프로비전 탭을 클릭합니다.
- 업데이트하려는 데이터베이스 인스턴스를 선택합니다.
- 오른쪽 위 모서리에서 편집 을 클릭합니다.
- 복원 창(일)에서 복원 창의 일 수를 설정합니다.
- 저장을 클릭합니다.
curl
curl -s -X PATCH --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances/my-instance -d '{"retention_window_in_days": 14}'
2단계: 자식 인스턴스 만들기
자식 인스턴스의 역할 및 사용 권한은 선택한 복원 지점에서 부모의 역할과 동일합니다. 이로 인해 사용자는 부모 인스턴스에 대해 현재 부여된 권한과 일치하지 않는 권한을 가질 수 있습니다. Azure Databricks ID 역할을 보고 자식 인스턴스에 대한 오래된 권한을 취소합니다.
일반 데이터베이스 인스턴스를 만드는 동안 부모에서 만들기 를 사용하도록 설정하여 자식 인스턴스를 만듭니다. 데이터베이스 인스턴스 만들기 및 관리를 참조하세요.
사용자 인터페이스 (UI)
부모에서 만들기를 사용하도록 설정하면 다음 두 개의 추가 매개 변수를 지정할 수 있습니다.
- 부모 인스턴스 이름: 자식 데이터베이스를 만들 부모 인스턴스의 이름입니다.
-
부모에서 다음까지의 데이터를 포함합니다 . 데이터를 원하는 특정 기록 시점입니다.
- 현재 지정 시간: 이렇게 하면 데이터베이스 인스턴스의 최신 데이터가 포함된 자식 인스턴스가 만들어집니다.
- 특정 날짜 및 시간: 이렇게 하면 데이터베이스 인스턴스의 복원 창 내에서 특정 시점에 자식 인스턴스가 만들어집니다. 자식 인스턴스는 특정 시점의 모든 데이터를 포함합니다.
- 특정 로그 시퀀스 번호: 복원 창의 특정 WAL(Write-ahead-log) LSN(로그 시퀀스 번호)에서 자식 인스턴스를 만듭니다. PostgreSQL은 WAL을 사용하여 복구를 지원하고 각 WAL 레코드에 LSN을 할당합니다. 자식 인스턴스에는 해당 WAL LSN의 모든 데이터가 포함됩니다. WAL에 대한 자세한 내용은 WAL 내부를 참조하세요. 현재 LSN 값을 가져오려면 Backup 컨트롤 함수를 참조하세요.
curl
데이터베이스 인스턴스의 최신 데이터를 사용하여 자식 인스턴스를 만듭니다.
curl -s -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances -d '{"name": "test", "capacity": "CU_2", "parent_instance_ref": {"name": "test-child"}}'
UTC로 지정된 특정 날짜 및 시간의 데이터를 사용하여 자식 인스턴스를 만듭니다.
curl -s -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances -d '{"name": "test", "capacity": "CU_2", "parent_instance_ref": {"name": "test-child", "branch_timestamp":"2025-05-23T17:21:00Z"}}'
데이터베이스 인스턴스의 특정 WAL LSN에서 데이터를 사용하여 자식 인스턴스를 만듭니다.
curl -s -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances -d '{"name": "test", "capacity": "CU_2", "parent_instance_ref": {"name": "test-child", "lsn":"0/2A156E"}}'
Python SDK
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.database import DatabaseInstance
# Initialize the Workspace client
w = WorkspaceClient()
parent_instance_name = "test-child"
instance_name = "test"
# Create a child instance using the most recent data from a database instance.
instance = w.database.create_database_instance(
DatabaseInstance(
name="my-database-instance",
capacity="CU_1",
parent_instance_ref={
"name": parent_instance_name
}
)
)
# Create a child instance with data from a specific date and time, specified in UTC.
instance = w.database.create_database_instance(
DatabaseInstance(
name=instance_name,
capacity="CU_1",
parent_instance_ref={
"name": parent_instance_name,
"branch_timestamp": "2025-05-23T17:21:00Z"
}
)
)
# Create a child instance with data from a specific WAL LSN of a database instance.
instance = w.database.create_database_instance(
DatabaseInstance(
name=instance_name,
capacity="CU_1",
parent_instance_ref={
"name": parent_instance_name,
"lsn": "0/2A156E"
}
)
)
CLI
# Create a database instance from the most recent data of a parent instance
databricks database create-database-instance my-database-instance \
--capacity CU_1 \
--parent-instance-ref '{"name": "my-parent-instance"}'
# Create a database instance from a specific date and time, specified in UTC
databricks database create-database-instance \
--json '{
"name": "my-database-instance",
"capacity": "CU_2",
"parent_instance_ref": {
"name": "my-parent-instance",
"branch_timestamp": "2025-05-23T17:21:00Z"
}
}'
# Create a database instance from a specific WAL LSN of a parent instance
databricks database create-database-instance \
--json '{
"name": "my-database-instance",
"capacity": "CU_2",
"parent_instance_ref": {
"name": "my-parent-instance",
"lsn": "0/2A156E"
}
}'
3단계(선택 사항): 데이터 복원
특정 시점에 자식 인스턴스를 만든 후 자식 인스턴스에서 프로덕션 인스턴스로 데이터를 복원할 수 있습니다. 이는 실수로 인한 데이터 손실 또는 손상으로부터 복구하는 데 유용합니다.
데이터를 복원하려면 다음을 수행합니다.
- 선호하는 PostgreSQL 클라이언트 또는 연결 방법을 사용하여 자식 인스턴스에 연결합니다. 연결 및 쿼리를 참조하세요.
- 자식 인스턴스에서 프로덕션 인스턴스로 필요한 데이터를 복사하는 스크립트를 작성합니다. 스크립트는 다음을 수행해야 합니다.
- 자식 인스턴스에서 필요한 특정 테이블 또는 데이터 쿼리
- 프로덕션 인스턴스에 데이터 삽입 또는 업데이트
- 필요에 따라 충돌 또는 데이터 변환 처리
- 먼저 작은 데이터 하위 집합에서 복원 작업을 테스트하여 정확성을 확인합니다.
- 전체 복원 스크립트를 실행하여 필요한 모든 데이터를 프로덕션으로 다시 복사합니다.
- 데이터를 성공적으로 복원하고 프로덕션 인스턴스가 올바른지 확인한 후 자식 인스턴스를 삭제합니다. 인스턴스를 삭제하려면 인스턴스 삭제를 참조하세요.
제한점
- 데이터베이스 인스턴스에 대해 한 번에 하나의 자식 인스턴스만 만들 수 있습니다.
- 자식 인스턴스를 삭제하지 않으면 부모 인스턴스를 삭제할 수 없습니다.
- 자식 인스턴스는 단기 테스트 또는 복구를 위해 설계되었습니다. 자식 또는 부모를 많이 수정하면 시스템에서 데이터 공유를 줄이고 자식에 대한 전체 복사본을 유지 관리할 수 있습니다. 스토리지 사용량 및 비용은 독립 실행형 데이터베이스 인스턴스와 일치하도록 증가할 수 있습니다.