Important
この機能は、、westus、westus2、eastus、eastus2、centralus、southcentralus、northeurope、westeurope、australiaeast、brazilsouth、canadacentral、centralindia、southeastasiaの各リージョンのuksouth段階にあります。
このページでは、子インスタンスを使用してデータを復元し、Lakebase データベース インスタンスで時間移動を実行する方法について説明します。
子インスタンスを作成する必要がある場合
子インスタンスの作成は、次のシナリオで役立ちます。
- 偶発的なデータ損失の回復: 昨日午前 10 時 23 分にクリティカル テーブルが削除された場合は、午前 10 時 22 分に設定された子インスタンスを生成して、不足しているデータのみを抽出してマージすることができます。
- テスト環境と QA 環境: 過去 X 日間の任意の時点から (復元ウィンドウで定義されている) 運用環境に似た環境を複製して、スキーマの変更を検証するか、統合テストを実行します。
- コンプライアンスと監査: 内部監査、財務調整、またはフォレンジック分析のために、過去の日付のデータベースの状態を反映する子インスタンスをプロビジョニングします。
子インスタンスとは
子インスタンスは、元のデータベース インスタンスの書き込み時のコピークローンです。 これは、現在の時点から作成することも、 復元ウィンドウ内の過去の特定の時点から作成することもできます。 復元ウィンドウでは、ポイントインタイム リカバリーを実行できる時間範囲 (2 ~ 35 日) を指定します。 復元ウィンドウは、データベース インスタンスの作成時に定義されます。 この復元ウィンドウ内の任意の時点で、手動スナップショットや完全なデータベース エクスポートを待たずに、子インスタンスを作成できます。
子インスタンスを作成した後は、削除されるまでクエリに使用できます。 親の復元ウィンドウに関連付けられている自動有効期限はありません。 これにより、親の復元ウィンドウの有効期限が切れた場合でも、子インスタンスが作成されたポイントインタイム データに常にアクセスできます。
子インスタンスは親から分離されます。 子インスタンスに対して実行する読み取りまたは書き込みはすべて、ソース インスタンスには影響しません。 子インスタンスに対して行われた変更では、書き込み時のコピーが使用されるため、変更は "デルタ" として格納されます。 これにより、変更されていないデータが共有され、追加のストレージが最小限に抑えられます。
移動時間を指定してデータを復元する子インスタンスを作成する
子インスタンスの作成は、次のシナリオで役立ちます。
- 偶発的なデータ損失の回復: 昨日午前 10 時 23 分にクリティカル テーブルが削除された場合は、午前 10 時 22 分に設定された子インスタンスを生成して、不足しているデータのみを抽出してマージすることができます。
- テスト環境と QA 環境: 過去 X 日間の任意の時点から (復元ウィンドウで定義されている) 運用環境に似た環境を複製して、スキーマの変更を検証するか、統合テストを実行します。
- コンプライアンスと監査: 内部監査、財務調整、またはフォレンジック分析のために、過去の日付のデータベースの状態を反映する子インスタンスをプロビジョニングします。
ステップ バイ ステップの手順
手順 1: (省略可能) 親データベース インスタンスで復元ウィンドウを構成する
復元ウィンドウの有効な値は、2 日から 35 日までの範囲です。 既定のウィンドウは 7 日間です。 データベース インスタンスの復元ウィンドウは、インスタンスの作成時に指定できます。 データベース インスタンスの作成を参照してください。
UI または API を使用して、データベース インスタンスの復元ウィンドウを変更します。
UI
- ワークスペースのサイドバーで、[コンピューティング] をクリックします。
- Lakebase Provisioned タブをクリックします。
- 更新するデータベース インスタンスを選択します。
- 右上隅にある [ 編集] をクリックします。
- [ 復元ウィンドウ (日数)]で、復元ウィンドウの日数を設定します。
- [保存] をクリックします。
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
親から作成を有効にすると、次の 2 つの追加パラメーターを指定できます。
- 親インスタンス名: 子データベースを作成する親インスタンスの名前。
-
親から次までのデータを含めます。 データの取得に使用する特定の履歴ポイント。
- 現在の時点: これにより、データベース インスタンスの最新のデータを含む子インスタンスが作成されます。
- 特定の日付と時刻: これにより、データベース インスタンスの復元ウィンドウ内の特定の時点に子インスタンスが作成されます。 子インスタンスには、その特定の時点のすべてのデータが含まれます。
- 特定のログ シーケンス番号: 復元ウィンドウの特定の先書きログ (WAL) ログ シーケンス番号 (LSN) から子インスタンスを作成します。 PostgreSQL は WAL を使用して復旧をサポートし、各 WAL レコードに LSN を割り当てます。 子インスタンスには、その WAL LSN のすべてのデータが含まれています。 WAL の詳細については、 WAL の内部を参照してください。 現在の LSN 値を取得するには、 バックアップ制御機能を参照してください。
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 クライアントまたは接続方法を使用して、子インスタンスに接続します。 接続とクエリを参照してください。
- 必要なデータを子インスタンスから実稼働インスタンスにコピーするスクリプトを記述します。 スクリプトでは、次の操作を行う必要があります。
- 子インスタンスから必要な特定のテーブルまたはデータに対してクエリを実行する
- 実稼働インスタンスにデータを挿入または更新する
- 必要に応じて競合またはデータ変換を処理する
- データの小さなサブセットに対する復元操作を最初にテストして、正確性を確認します。
- 完全復元スクリプトを実行して、必要なすべてのデータを運用環境にコピーします。
- データを正常に復元し、運用インスタンスが正しいことを確認した後、子インスタンスを削除します。 インスタンスを削除するには、「インスタンス の削除」を参照してください。
制限事項
- 1 つのデータベース インスタンスに対して一度に作成できる子インスタンスは 1 つだけです。
- 子インスタンスが削除されない限り、親インスタンスは削除できません。
- 子インスタンスは、短期的なテストまたは復旧用に設計されています。 子または親を大幅に変更すると、システムがデータ共有を減らし、子の完全なコピーを維持する可能性があります。 ストレージの使用量とコストは、スタンドアロン データベース インスタンスに合わせて増加する可能性があります。