スナップショット

スナップショットは、スキーマとすべてのデータを含む、プロジェクトのルート ブランチのポイントインタイム キャプチャです。 Lakebase は、パフォーマンスへの影響を最小限に抑えながらスナップショットを即座に作成します。 バックアップまたは復元ポイントとして使用します。

Lakebase アプリでスナップショットを作成、復元、管理することも、Python SDK、Java SDK、Databricks CLI、またはcurlのスナップショットAPIを使ってプログラム的に操作できます。 Terraformはブランチを作成することでスナップショットから復元できます。 操作が複数方法で利用可能な場合、指示はタブでまとめて表示されます。

Note

2026年6月1日から、Lakebaseのスナップショットストレージは請求可能となります。 スナップショット ストレージコストを参照してください。

スナップショットを使用するタイミング

スナップショットは、定期的なバックアップや、スキーマの変更やその他の破壊的な操作を行う前に役立ちます。 必要に応じて復元できる復元ポイントを簡単に作成できます。

スナップショットを手動で作成する

スナップショットは、ある時点でのブランチの状態をキャプチャします。 ルート ブランチでのみ、スナップショットを手動で作成できます。 手動スナップショットは、プロジェクトごとに 10 個に制限されます ( 「プロジェクトの制限」を参照)。 これらのスナップショットは、プロジェクト内の任意のブランチから復元できます。

スナップショットを作成する

スナップショットは即座に作成され、スキーマまたはデータを大幅に変更する前に役立ちます。

UI

Lakebaseアプリでプロジェクトにアクセスし、分岐ナビゲーションで「 バックアップ&リストア 」を選択してください。 [ スナップショットの作成 ] をクリックして、データの現在の状態をキャプチャします。

プリロードされたサンプル SQL を含む SQL エディター

Python SDK

create_snapshot は長時間実行オペレーションを返します。 スナップショットが利用可能になるまで .wait() に電話してブロックしてください。 その結果、 Snapshotが生まれます。 source_branch は必要であり、有効期限も有効です。つまり、 ttl、 expire_time、または no_expiryのいずれかを正確に設定します。 オプションで、 source_branch_lsn や source_branch_timeで時間点をピン留めすることもできます。

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Snapshot, SnapshotSpec, Duration

w = WorkspaceClient()

snapshot = Snapshot(
    spec=SnapshotSpec(
        source_branch="projects/my-project/branches/main",
        ttl=Duration(seconds=604800),  # 7 days
    )
)

result = w.postgres.create_snapshot(
    parent="projects/my-project",
    snapshot=snapshot,
    snapshot_id="my-snapshot",
).wait()

print(f"Snapshot created: {result.name}")

Java SDK

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
import com.google.protobuf.Duration;

WorkspaceClient w = new WorkspaceClient();

SnapshotSpec spec = new SnapshotSpec()
    .setSourceBranch("projects/my-project/branches/main")
    .setTtl(Duration.newBuilder().setSeconds(604800L).build());  // 7 days

Snapshot snapshot = new Snapshot().setSpec(spec);

Snapshot result = w.postgres().createSnapshot(
    new CreateSnapshotRequest()
        .setParent("projects/my-project")
        .setSnapshot(snapshot)
        .setSnapshotId("my-snapshot")
).waitForCompletion();

System.out.println("Snapshot created: " + result.getName());

CLI

snapshot_idはプロジェクトの後の立場論です。 仕様は --json body にマッピングされます:

databricks postgres create-snapshot projects/my-project my-snapshot \
  --json '{
    "spec": {
      "source_branch": "projects/my-project/branches/main",
      "ttl": "604800s"
    }
  }'

curl

スナップショットの作成は長期的な操作です。 リクエストを送信するとオペレーションが返され、そのオペレーションが完了するまでポーリングします。 完了した操作は Snapshot リソースに展開されます。 実際には、スナップショットはすぐに AVAILABLE されます。

スナップショット仕様には source_branchが必要です。 時点と有効期限を次のように設定します:

  • 時点(任意): source_branch_lsn または source_branch_time のいずれかを設定します(相互排他的)。 両方を省略して、現在の支店の責任者をスナップショットで確認してください。
  • 有効期限 (必須): expire_time (将来でなければならないRFC 3339のタイムスタンプ)、 ttl ( "604800s"などの秒単位の持続時間)、または no_expiry: trueのいずれかを正確に設定します。

snapshot_idは必要で、あなたが選び、作成後は変更できません。

  1. 作成要求を送信します。 snapshot_idはクエリ文字列に入り、スペックはリクエスト本体にマッピングされます:

    curl -X POST "$WORKSPACE/api/2.0/postgres/projects/my-project/snapshots?snapshot_id=my-snapshot" \
      -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "spec": {
          "source_branch": "projects/my-project/branches/main",
          "source_branch_lsn": "16/B374D848",
          "ttl": "604800s"
        }
      }'
    

    この対応は長期にわたる作業です。

    {
      "name": "projects/my-project/operations/<operation-id>",
      "done": false
    }
    
  2. done が true になるまで、操作をポーリングする:

    curl "$WORKSPACE/api/2.0/postgres/projects/my-project/operations/<operation-id>" \
      -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
    

    操作が完了すると、 response は次の Snapshotに展開されます:

    {
      "name": "projects/my-project/operations/<operation-id>",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/databricks.postgres.v1.Snapshot",
        "name": "projects/my-project/snapshots/my-snapshot",
        "status": {
          "full_size_bytes": "10485760",
          "diff_size_bytes": "524288"
        }
      }
    }
    

    サイズフィールドは文字列としてシリアライズされた int64 値です。

  3. スナップショットが利用可能かどうかは直接入手してください。

長期運用に関する詳細は 「長期実行操作」をご覧ください。

バックアップ スケジュールを作成する

自動スナップショットを定期的に (毎日、毎週、または毎月) 実行するようにスケジュールし、手動操作なしで一貫性のあるバックアップを確保します。 バックアップ スケジュールはブランチごとに構成され、ルート ブランチにのみ適用されます。 手動スナップショットの制限 ( プロジェクトの制限を参照) は、スケジュールされたスナップショットには適用されません。

各ルートブランチには、カデンスのリストを保持する単一のバックアップスケジュールがあります。 スケジュールを読み、そのケイデンスを置き換えます。 別個の作成・削除操作はなく、空のリストを設定すると自動スナップショットも無効になります。 スケジュールはLakebaseアプリで設定するか、Python SDK、Java SDK、Databricks CLI、Terraform、Databricks Asset Bundles、またはcurlのバックアップスケジュールAPIを使ってプログラム的に設定できます。

Note

バックアップスケジュールへのプログラム的アクセスはベータ版で、すべてのLakebaseワークスペースで利用可能です。

UI

バックアップ スケジュールを作成または変更するには:

  1. プロジェクトの [バックアップと復元 ] ページで、[ スケジュールの編集 ] をクリックして、バックアップ スケジュールの構成ダイアログを開きます。

    [バックアップ スケジュールの編集] ボタン

  2. 次のオプションからスケジュールの頻度を選択します。

    • スケジュールなし – 自動スナップショットを無効にします (既定)
    • 日単位 – 指定した時刻に毎日スナップショットを作成します
    • 週単位 – 特定の曜日にスナップショットを作成します
    • 月単位 – 特定の日にスナップショットを作成します

    バックアップ スケジュールの頻度オプション

  3. 選択した頻度に基づいてスケジュールの詳細を構成します。 スナップショットを作成する頻度と、スナップショットを保持する期間を指定します。

構成すると、スケジュールによって作成されたスナップショットが、自動的に作成されたことを示すラベルが付いた [バックアップと復元 ] ページに表示されます。

Python SDK

get_snapshot_scheduleでスケジュールを読み取り、update_snapshot_scheduleでその実行間隔を設定します。 update_snapshot_schedule スケジュールのリソース名を name 引数として取り、すべてのケイデンスセットを置き換えます。 各スナップショットを7日間保持する週ごとのケイデンスを設定するには、以下を実行します:

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import (
    SnapshotSchedule,
    ScheduleCadence,
    WeeklySchedule,
    DayOfWeek,
    Duration,
    FieldMask,
)

w = WorkspaceClient()

schedule = SnapshotSchedule(
    name="projects/my-project/branches/main/snapshot-schedule",
    schedule=[
        ScheduleCadence(
            weekly_schedule=WeeklySchedule(day_of_week=DayOfWeek.MONDAY, hour=3),
            retention=Duration(seconds=604800),  # 7 days
        )
    ],
)

w.postgres.update_snapshot_schedule(
    name="projects/my-project/branches/main/snapshot-schedule",
    snapshot_schedule=schedule,
    update_mask=FieldMask(field_mask=["schedule"]),
)

print("Schedule updated.")

現在のスケジュールを読むには、以下を実行してください:

schedule = w.postgres.get_snapshot_schedule(
    name="projects/my-project/branches/main/snapshot-schedule"
)

for cadence in schedule.schedule:
    print(cadence)

Java SDK

各スナップショットを7日間保持する週ごとのケイデンスを設定するには、以下を実行します:

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
import com.google.protobuf.Duration;
import java.util.List;

WorkspaceClient w = new WorkspaceClient();

ScheduleCadence cadence = new ScheduleCadence()
    .setWeeklySchedule(new WeeklySchedule().setDayOfWeek(DayOfWeek.MONDAY).setHour(3))
    .setRetention(Duration.newBuilder().setSeconds(604800L).build());  // 7 days

SnapshotSchedule schedule = new SnapshotSchedule()
    .setName("projects/my-project/branches/main/snapshot-schedule")
    .setSchedule(List.of(cadence));

SnapshotSchedule result = w.postgres().updateSnapshotSchedule(
    new UpdateSnapshotScheduleRequest()
        .setName("projects/my-project/branches/main/snapshot-schedule")
        .setSnapshotSchedule(schedule)
        .setUpdateMask("schedule")
).waitForCompletion();

System.out.println("Schedule updated: " + result.getName());

CLI

Databricks CLI 1.16.0以降が必要です。 スケジュールを get-snapshot-scheduleで読み、 update-snapshot-scheduleで設定してください。 2 番目の引数は更新マスクであり、schedule である必要があります。 スケジュールの設定はケイデンス全体のセットを置き換えるもので、長時間続く操作なので、 --no-waitを通過しない限りコマンドは完了を待ちます。

現在のスケジュールを読むには、以下を実行してください:

databricks postgres get-snapshot-schedule \
  projects/my-project/branches/main/snapshot-schedule

各スナップショットを7日間保持する週ごとのケイデンスを設定するには、以下を実行します:

databricks postgres update-snapshot-schedule \
  projects/my-project/branches/main/snapshot-schedule \
  schedule \
  --json '{
    "schedule": [
      { "weekly_schedule": { "day_of_week": "MONDAY", "hour": 3 }, "retention": "604800s" }
    ]
  }'

自動スナップショットを無効にするには、空のスケジュールを設定します:

databricks postgres update-snapshot-schedule \
  projects/my-project/branches/main/snapshot-schedule \
  schedule \
  --json '{ "schedule": [] }'

Terraform

databricks_postgres_snapshot_scheduleリソースでスケジュールを管理しましょう。 parentをブランチリソース名に設定し、スケジュールのnameはそこから派生します。 schedule属性はカデンスの一覧であり、リソースを適用すると分岐のカデンスセットが置き換えられます:

resource "databricks_postgres_snapshot_schedule" "this" {
  parent = "projects/my-project/branches/main"

  schedule = [{
    weekly_schedule = {
      day_of_week = "MONDAY"
      hour        = 3
    }
    retention = "604800s" # 7 days
  }]
}

Databricks アセット バンドル

バンドル構成の postgres_snapshot_schedules キーの下にスケジュールを定義してください。 branchをブランチリソース名に設定してください。 バンドルを展開すると、ブランチに設定されたケイデンスセットが上書きされます:

resources:
  postgres_snapshot_schedules:
    main_schedule:
      branch: projects/my-project/branches/main
      schedule:
        - weekly_schedule:
            day_of_week: MONDAY
            hour: 3
          retention: 604800s # 7 days

curl

スケジュールを GETで読み、 PATCHで設定してください。 このアップデートはケイデンスセット全体を置き換えるので、保持したいすべてのカデンスを含め、パス update_mask=scheduleしてください。

現在のスケジュールを読むには、以下を実行してください:

curl "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/main/snapshot-schedule" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq

スケジュールの更新は長期にわたる作業です。 各スナップショットを7日間保持する週ごとのケイデンスを設定するには、以下を実行します:

curl -X PATCH "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/main/snapshot-schedule?update_mask=schedule" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "schedule": [
      { "weekly_schedule": { "day_of_week": "MONDAY", "hour": 3 }, "retention": "604800s" }
    ]
  }'

返されたオペレーションを、done が true になるまでポーリングします。 実行時間の長い操作を参照してください。 完了した操作のresponseはSnapshotScheduleに展開されます。

自動スナップショットを無効にするには、空のスケジュールを設定します:

curl -X PATCH "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/main/snapshot-schedule?update_mask=schedule" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{ "snapshot_schedule": { "schedule": [] } }'

ケイデンスと保持に関する参考資料

スケジュール内の各カデンスは、UTCで1時間ごとに取られる次の繰り返しのうちの1回です。 分単位や秒単位はサポートされていません。

  • 毎日:hour を設定(0~23)。
  • 毎週: day_of_week(MONDAY~SUNDAY)とhour(0–23)を設定します。
  • 毎月: day(1~31、日数の少ない月はその月の末日に調整)と hour(0~23)を設定します。

各カデンスは retention 持続時間も設定し、その後スナップショットは終了します。

  • 保持期間は最低1時間、最大35日までです。
  • 保持はスナップショットを撮影したときに適用され、遡及適用されません。 既存のスナップショットは元の有効期限を保持します。 変更後に取得したスナップショットのみが新しい保持を使います。
  • 同じウィンドウ内に複数のケイデンスが提出されている場合、Lakebaseは単一のスナップショットを作成し、対応するケデンスの中で最も長く保持します。

スケジュールの読み書きや更新には、プロジェクトに対する CAN_USE の許可が必要です。

スナップショットの保持

スナップショットは、保有期間の有効期限が切れると自動的に削除されます。 スケジュールを編集することで、保持設定をいつでも調整できます。 次の点に注意してください。

  • 保持期間を短くすると、保持されるスケジュールされたスナップショットの数を管理できます。
  • 削除されたスナップショットを復旧できない
  • 手動スナップショットは、バックアップ スケジュールの保持設定の影響を受けない

スナップショットの取得とリスト

Lakebaseアプリの バックアップ&復元 ページでスナップショットを閲覧するか、APIを使ってプログラムで取得できます。

スナップショットを一覧表示する

UI

Lakebaseアプリの バックアップ&復元 ページでは、スナップショットが日付順に一覧表示され、各スナップショットの日付とサイズが示されています。 スケジュールされたスナップショットは、自動生成されたことを示すラベルとともに同じリストに表示されます。

Python SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

for snapshot in w.postgres.list_snapshots(parent="projects/my-project"):
    print(f"Snapshot: {snapshot.name}")

Java SDK

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.Snapshot;

WorkspaceClient w = new WorkspaceClient();

for (Snapshot snapshot : w.postgres().listSnapshots("projects/my-project")) {
    System.out.println("Snapshot: " + snapshot.getName());
}

CLI

databricks postgres list-snapshots projects/my-project --output json | jq

curl

プロジェクト内のスナップショットをリストアップします。 page_size と page_token を使って結果のページを切り替えます。 空 next_page_token は最終ページを示します:

curl "$WORKSPACE/api/2.0/postgres/projects/my-project/snapshots?page_size=20" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
{
  "snapshots": [{ "name": "projects/my-project/snapshots/my-snapshot" }],
  "next_page_token": ""
}

単一のスナップショットを取得しましょう

1つのスナップショットの詳細をIDで取得します。 createとdeleteとは異なり、getは Snapshot リソースを直接返します(長時間実行される操作ではありません)。 リード時には、有効期限が expire_time か no_expiryとして報告されます。

Python SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

snapshot = w.postgres.get_snapshot(name="projects/my-project/snapshots/my-snapshot")

print(f"Snapshot: {snapshot.name}")
print(f"Source branch: {snapshot.status.source_branch}")
print(f"Full size: {snapshot.status.full_size_bytes} bytes")

Java SDK

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.Snapshot;

WorkspaceClient w = new WorkspaceClient();

Snapshot snapshot = w.postgres().getSnapshot("projects/my-project/snapshots/my-snapshot");

System.out.println("Snapshot: " + snapshot.getName());
System.out.println("Full size: " + snapshot.getStatus().getFullSizeBytes() + " bytes");

CLI

databricks postgres get-snapshot projects/my-project/snapshots/my-snapshot --output json | jq

curl

curl "$WORKSPACE/api/2.0/postgres/projects/my-project/snapshots/my-snapshot" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq

スナップショットからの復元

スナップショットを使用するには、新しいブランチを作成して復元してください。 インプレス復元は行わず、現在のブランチは変更されず、スナップショットデータで 新しいルートブランチ が作成されます。

UI

Lakebase アプリの [バックアップと復元 ] ページで、スナップショットが日付別に一覧表示されます。 復元するスナップショットを見つけて、[ 復元] をクリックします。 何が起こるかを説明する確認ダイアログが表示されます。復元はすぐに行われ、現在のブランチは変更されず、 branch_from_snapshot_ などの名前で新しいブランチが作成され、その後にスナップショットの日付と時刻が続きます。 [復元] をクリックして、操作を実行することを確認します。 スナップショット データを使用して 新しいルート ブランチ が作成されます。 現在のブランチは変更されません。

復元が完了すると、成功メッセージと、新しいブランチの ブランチの概要 ページが表示されます。 「 新しいブランチに接続して復元されたデータをプレビューする 」というタイトルのセクションでは、アプリケーションまたはクライアントから接続して復元されたデータを確認できることを説明しています。

スナップショットからの復元後のブランチの概要

[ 接続の詳細の取得 ] をクリックして、新しいブランチの接続情報 (ブランチ、コンピューティング、データベース、ロール、コピー可能な接続文字列) を含むダイアログを開きます。 ブランチのコンピューティングは、開始中は「保留中」と表示される場合があります。 アクティブになったら、接続文字列を使用して接続できます。

新しいブランチで実行できるその他の操作:

  • データをプレビューします。 アプリケーション構成を変更する前に、新しいブランチの接続の詳細を使用してデータを確認し、復元を確認します。 データベースへの接続を参照してください。
  • ブランチの名前を変更します。 ブランチの概要またはブランチの一覧から、ブランチにわかりやすい名前を付けます。 ブランチ 設定の更新を参照してください。
  • 既定値として設定します。 復元されたデータに問題がなければ、このブランチをプロジェクトの既定のブランチにすることができます。 「既定値として設定する」を参照してください。
  • アプリケーションを新しいブランチにポイントします。 データが正しいことを確認したら、アプリケーションの接続設定を更新して、このブランチの接続の詳細を使用します。
  • 前のブランチを削除するか、保持します。 以前使用していたブランチは、不要になった場合は削除することも、バックアップとして保持することもできます。 ブランチの削除を参照してください。

新しいブランチとすべてのプロジェクト ブランチは、プロジェクトの [ブランチ] ページから管理できます。このページでは、復元されたブランチが他のブランチと共にルート ブランチとして表示されます。

Python SDK

独立した復元操作はありません。 source_snapshot をスナップショットのリソース名に設定してブランチを作成します。 これにより、分岐作成は復元パスを通じてルーティングされ、スナップショットのデータを含む新しいルートブランチが生成されます。 source_snapshot は source_branch、 source_branch_lsn、 source_branch_timeと相反し、枝は依然として有効期限(no_expiry、 ttl、または expire_time)を必要とします。 replace_existing: true と source_snapshot を組み合わせて設定すると、既存のターゲット ブランチに対してアップサートが行われ、これはべき等な復元となります。

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Branch, BranchSpec

w = WorkspaceClient()

branch = Branch(
    spec=BranchSpec(
        source_snapshot="projects/my-project/snapshots/my-snapshot",
        no_expiry=True,
    )
)

result = w.postgres.create_branch(
    parent="projects/my-project",
    branch=branch,
    branch_id="restored-branch",
).wait()

print(f"Branch created: {result.name}")

Java SDK

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;

WorkspaceClient w = new WorkspaceClient();

BranchSpec spec = new BranchSpec()
    .setSourceSnapshot("projects/my-project/snapshots/my-snapshot")
    .setNoExpiry(true);

Branch branch = new Branch().setSpec(spec);

Branch result = w.postgres().createBranch(
    new CreateBranchRequest()
        .setParent("projects/my-project")
        .setBranch(branch)
        .setBranchId("restored-branch")
).waitForCompletion();

System.out.println("Branch created: " + result.getName());

CLI

databricks postgres create-branch projects/my-project restored-branch \
  --json '{
    "spec": {
      "source_snapshot": "projects/my-project/snapshots/my-snapshot",
      "no_expiry": true
    }
  }'

Terraform

スナップショットから復元するには、databricks_postgres_branchでsource_snapshotを設定したspecを宣言してください。 Terraformのスナップショットサポートはこの復元パスに限定されており、スナップショットの作成、リストアップ、削除のためのTerraformリソースはありません。

resource "databricks_postgres_branch" "restored" {
  branch_id = "restored-branch"
  parent    = "projects/my-project"
  spec = {
    source_snapshot = "projects/my-project/snapshots/my-snapshot"
    no_expiry       = true
  }
}

curl

独立した復元操作はありません。 スナップショットを復元するには、新しいブランチを作成し、ブランチ仕様で source_snapshot をスナップショットのリソース名に設定します。 これにより、分岐作成はリストアパスを経由し、スナップショットのデータを含む新しいルートブランチが生成されます。 既存のブランチは変更されていません。

source_snapshot source_branch、source_branch_lsn、source_branch_timeとは相反する。 replace_existing: true と source_snapshot を組み合わせて設定すると、既存のターゲット ブランチに対してアップサートが行われ、これはべき等な復元となります。 参照されるスナップショットは AVAILABLE で、新しいブランチと同じプロジェクトに属している必要があります。

  1. スナップショットからブランチを作成します。 branch_idはクエリ文字列に入ります:

    curl -X POST "$WORKSPACE/api/2.0/postgres/projects/my-project/branches?branch_id=restored-branch" \
      -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "spec": {
          "source_snapshot": "projects/my-project/snapshots/my-snapshot",
          "no_expiry": true
        }
      }'
    
  2. 返されたオペレーションを、done が true になるまでポーリングします。 完了した処理は、新しい Branch に展開されます。

  3. 新しいブランチに接続して復元データを検証し、アプリケーションをそちらに向けてください。 「 支店を作成 して データベースに接続する」をご覧ください。

スナップショットを削除してください

削除されたスナップショットは復元できません。

UI

Lakebaseアプリの バックアップ&復元 ページで、リストからスナップショットを見つけ、 そのKebabメニューアイコンを開きます。 Kebabメニューを開き、「 スナップショット削除」を選択します。

Python SDK

スナップショットの削除は長期的な作業です。 完了するまで .wait() を呼んでブロックしてください。

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

w.postgres.delete_snapshot(name="projects/my-project/snapshots/my-snapshot").wait()

print("Snapshot deleted")

Java SDK

import com.databricks.sdk.WorkspaceClient;

WorkspaceClient w = new WorkspaceClient();

w.postgres().deleteSnapshot("projects/my-project/snapshots/my-snapshot")
    .waitForCompletion();

System.out.println("Snapshot deleted");

CLI

databricks postgres delete-snapshot projects/my-project/snapshots/my-snapshot

curl

スナップショットの削除は長期的な作業です。 リクエストは操作を返します。 完了した操作の応答は空です。

curl -X DELETE "$WORKSPACE/api/2.0/postgres/projects/my-project/snapshots/my-snapshot" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq

返されたオペレーションを、done が true になるまでポーリングします。

スナップショット ストレージのコスト

2026年6月1日から、Lakebaseのスナップショットストレージは請求可能となります。

課金はスナップショットの種類に基づいています。

  • 手動スナップショットは、完全なスナップショットとして課金されます。
  • 定期スナップショットは、各スケジュールの最初のスナップショットについてはフルスナップショットとして課金され、その後の定期スナップショットについては増分(差分)ストレージとして課金されます。

各スナップショットのサイズは、[ バックアップと復元 ] ページに表示されます。 価格の詳細については、 Lakebase の価格に関するページを参照してください。

Limitations

スナップショットAPIには以下の制限があります:

  • スナップショットは不変です。 更新操作はありません。 ソースブランチ、ポイントインタイムセレクター、有効期限は作成時に固定されており、変更できません。
  • 現地での復元もできません。 スナップショットを復元するには、そこから新しいブランチを作成する必要があります。
  • 同じプロジェクトで、利用可能なスナップショット。 ソーススナップショットは AVAILABLE 状態でなければならず、新しいブランチと同じプロジェクトに属している必要があります。
  • 同時に指定できない復元フィールド。 create-branchリクエストでは、source_snapshotsource_branch、branch LSN、またはブランチタイムスタンプと組み合わせることはできません。 既存のターゲットブランチをアップサートするために replace_existing と組み合わせることも可能です。
  • Terraform。 プロバイダーはdatabricks_postgres_branchの source_snapshot 引数を通じてスナップショットのみからの復元をサポートしています。 スナップショットの作成、リスト、削除のためのTerraformリソースはありません。
  • ベータ版の入手可能性。 スナップショットAPIはベータ版で、すべてのLakebaseワークスペースで利用可能です。