共用方式為


開始使用 Lakebase 的 Databricks CLI

這很重要

Lakebase 自動縮放在以下地區處於 Beta 階段:eastus2westeuropewestus

Lakebase 自動縮放是 Lakebase 的最新版本,具備自動縮放運算、縮放至零、分支及即時還原功能。 關於與 Lakebase Provisioned 的功能比較,請參見「選擇版本」。

本指南將協助你開始使用 Databricks CLI,管理你的 Lakebase 專案、分支及計算(端點)。 你只需幾個指令就能學會如何建立一個可運作的專案。

欲了解完整指令參考及所有可用選項,請參閱 Databricks CLI 的 postgres 指令

先決條件

  • Databricks CLI:安裝 Databricks CLI。 請參見 安裝 Databricks CLI
  • 工作區存取權:您必須能存取 Lakebase 資源所在的 Azure Databricks 工作區。

使用 Databricks 進行認證

在執行任何 CLI 指令前,先用你的 Azure Databricks 工作空間進行認證:

databricks auth login --host https://your-workspace.cloud.databricks.com

用你實際的工作區網址替換 https://your-workspace.cloud.databricks.com 。 這個指令會開啟一個瀏覽器視窗,讓你用 OAuth 與你的 Azure Databricks 帳號進行認證。

備註

如果你有多個設定檔,請使用 --profile 旗標指定要使用哪一個: databricks postgres <command> --profile my-profile。 要查看你設定的設定檔,請執行 databricks auth profiles

欲了解更多認證選項,請參閱 Databricks 認證

取得命令說明

CLI 為所有指令提供內建協助。 用 --help 來查看可用的指令和選項。

了解所有 Postgres 指令的概覽:

databricks postgres --help

此時會顯示所有可用指令、全域旗標,以及資源命名慣例的資訊。

針對特定指令獲得詳細協助:

databricks postgres create-project --help

這會顯示指令的目的、必要與可選參數、使用範例,以及可用的旗標。

快速入門:建立你的第一個專案

請依照以下步驟建立一個完整的工作專案,並設有分支與運算端點:

1. 建立專案

建立新的 Lakebase 專案:

databricks postgres create-project my-project \
  --json '{
    "spec": {
      "display_name": "My Lakebase Project"
    }
  }'

此指令會建立專案並等待其完成。 專案 ID (my-project) 會成為資源名稱的一部分: projects/my-project。 專案以預設的生產分支和讀寫計算端點建立,兩者皆有自動產生的 ID。

可選擇性地將專案 ID 匯出為變數,用於後續指令:

export PROJECT_ID="my-project"

2. 取得分行識別碼

列出你專案中的分支,以找到預設的分支 ID:

databricks postgres list-branches projects/$PROJECT_ID

此系統會回傳專案中所有分支的資訊。 尋找具有 "default": true 狀態的分支。 請注意欄位中的 name 分支 ID(例如 br-divine-sea-y2k942xa)。

可選擇性地將分支 ID 匯出為變數,用於後續指令:

export BRANCH_ID="br-divine-sea-y2k942xa"

用清單輸出中你實際的預設分支 ID 來替換 br-divine-sea-y2k942xa

3. 取得端點 ID

列出你分支中的端點。 預設分支會自動包含一個讀寫端點:

databricks postgres list-endpoints projects/$PROJECT_ID/branches/$BRANCH_ID

請注意欄位中的 name 端點 ID。 它會以格式 projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id}。 擷取端點 ID(例如 ep-plain-sunset-y2vc0zan),並可選擇匯出為變數:

export ENDPOINT_ID="ep-plain-sunset-y2vc0zan"

用清單輸出中的實際端點 ID 替換 ep-plain-sunset-y2vc0zan

4. 產生資料庫憑證

產生憑證以連接您的資料庫:

databricks postgres generate-database-credential \
  projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID

這個指令會回傳一個 OAuth 標記,你可以用 PostgreSQL 客戶端 psql ,利用你的 Databricks 身份存取你的資料。 關於如何與 psql 連接的逐步說明,請參見 「Connect with psql」。 欲了解更多關於令牌到期與認證的資訊,請參閱認證。

管理您的資源

列出所有專案

列出你工作區中的所有專案:

databricks postgres list-projects

此系統回傳每個專案的資訊,包括名稱、顯示名稱、目前狀態及建立/更新時間戳記。

獲取資源詳情

獲取專案詳細資訊:

databricks postgres get-project projects/$PROJECT_ID

此會回傳詳細的專案設定,包括顯示名稱、PostgreSQL 版本、擁有者、歷史保留期限、分支大小限制、預設端點設定、儲存空間大小,以及建立/更新時間戳。

獲取分行詳細資訊:

databricks postgres get-branch projects/$PROJECT_ID/branches/$BRANCH_ID

此會回傳詳細的分支資訊,包括目前狀態、預設分支狀態、保護狀態、邏輯大小、來源分支細節(若是從其他分支分支),以及建立/更新時間戳記。

獲取關於終點的詳細資訊:

databricks postgres get-endpoint projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID

此會回傳詳細的端點配置,包括端點類型(讀寫或唯讀)、自動縮放設定(最小與最大運算單元)、當前狀態(ACTIVE、IDLE 等)、連線主機、暫停逾時,以及建立/更新時間戳。

更新資源

使用 update mask 模式更新資源。 更新遮罩指定要更新哪些欄位:

databricks postgres update-branch \
  projects/$PROJECT_ID/branches/$BRANCH_ID \
  spec.is_protected \
  --json '{
    "spec": {
      "is_protected": true
    }
  }'

此範例設 spec.is_protectedtrue,使該分支受到保護。 更新遮罩(spec.is_protected)告訴 API 要更新哪個欄位。 指令會回傳更新後的資源,顯示新值和更新的時間 update_time 戳。

要更新多個欄位,請使用逗號分隔的清單:

databricks postgres update-endpoint \
  projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID \
  "spec.autoscaling_limit_min_cu,spec.autoscaling_limit_max_cu" \
  --json '{
    "spec": {
      "autoscaling_limit_min_cu": 1.0,
      "autoscaling_limit_max_cu": 8.0
    }
  }'

常見工作流程

從生產環境建立一個功能分支

根據現有分支建立一個新分支來測試變更。 當你指定source_branch時,新分支在建立時將擁有與來源分支相同的模式和資料。 將專案和分支 ID 換成你的實際值:

databricks postgres create-branch \
  projects/my-project \
  feature \
  --json '{
    "spec": {
      "source_branch": "projects/my-project/branches/br-divine-sea-y2k942xa",
      "no_expiry": true
    }
  }'

備註

建立分支時,必須指定一個過期政策。 用 no_expiry: true 來建立永久分支。

要在 JSON 規範中使用 shell 變數(例如 $PROJECT_ID$BRANCH_ID),你需要用雙引號表示 --json 值,並跳出內部引號。

功能分支需要一個讀寫計算端點,以允許資料庫操作:

databricks postgres create-endpoint \
  projects/$PROJECT_ID/branches/feature \
  primary \
  --json '{
    "spec": {
      "endpoint_type": "ENDPOINT_TYPE_READ_WRITE",
      "autoscaling_limit_min_cu": 0.5,
      "autoscaling_limit_max_cu": 2.0
    }
  }'

完成功能分支的開發與測試後,你可以刪除它:

databricks postgres delete-branch projects/$PROJECT_ID/branches/feature

備註

刪除指令會立即回傳,但實際刪除可能需要時間完成。 你可以透過執行對應的 get resource 指令來驗證刪除,當資源完全刪除時會回傳錯誤。

擴展讀取能力並使用讀取副本

新增讀取副本以處理增加的讀取流量。 此範例在預設生產分支中新增一個讀取副本:

databricks postgres create-endpoint \
  projects/$PROJECT_ID/branches/$BRANCH_ID \
  read-replica-1 \
  --json '{
    "spec": {
      "endpoint_type": "ENDPOINT_TYPE_READ_ONLY",
      "autoscaling_limit_min_cu": 0.5,
      "autoscaling_limit_max_cu": 4.0
    }
  }'

你可以建立多個具有不同端點 ID(read-replica-1、、 read-replica-2等)的讀取副本來分配讀取工作負載。

理解關鍵概念

長時間執行的作業

建立、更新和刪除指令是長時間執行的操作。 預設情況下,CLI 會等待操作完成。 使用 --no-wait 立即返回並分別查詢狀態。

databricks postgres create-project $PROJECT_ID \
  --json '{"spec": {"display_name": "My Project"}}' \
  --no-wait

調查營運狀態:

databricks postgres get-operation projects/$PROJECT_ID/operations/operation-id

資源命名

Lakebase 使用階層式資源名稱:

  • 專案projects/{project_id} 建立專案時你要指定專案 ID。
  • 分支projects/{project_id}/branches/{branch_id}。 建立分支時要指定分支 ID。
  • 終點projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id}。 建立端點時,你要指定端點 ID(例如 primaryread-replica-1或 )。

ID 必須長度為 1 到 63 個字元,以小寫字母開頭,且僅包含小寫字母、數字和連字號。

更新遮罩

Update 指令需要一個更新遮罩,指定要修改哪些欄位。 遮罩可以是像 spec.display_name 這樣的欄位路徑,或者是多個欄位的逗號分隔列表。

--json負載包含這些欄位的新值。 只有更新遮罩中列出的欄位會被修改。

後續步驟