本指南將協助你開始使用 Databricks CLI,管理你的 Lakebase 專案、分支及計算(端點)。 你只需幾個指令就能學會如何建立一個可運作的專案。
欲了解完整指令參考及所有可用選項,請參閱 Databricks CLI 的 postgres 指令。
先決條件
- Databricks CLI:安裝 Databricks CLI。 請參見 安裝 Databricks CLI。
- 工作區存取權:您必須能存取 Lakebase 資源所在的 Azure Databricks 工作區。
驗證 Azure 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(例如 production 預設分支)。
可選擇性地將分支 ID 匯出為變數,用於後續指令:
export BRANCH_ID="production"
用清單輸出中實際的分支 ID 替換 production 。
3. 取得端點 ID
列出你分支中的端點。 預設分支會自動包含一個讀寫端點:
databricks postgres list-endpoints projects/$PROJECT_ID/branches/$BRANCH_ID
請注意欄位中的 name 端點 ID(例如 primary 預設的讀寫端點)。 可選擇性地匯出為變數:
export ENDPOINT_ID="primary"
用清單輸出中的實際端點 ID 替換 primary 。
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
指令會回傳分支的當前狀態、保護狀態、邏輯大小、來源分支細節(如適用)及時間戳記。
建立功能分支
根據現有分支建立一個新分支來測試變更。 當你指定source_branch時,新分支在建立時將擁有與來源分支相同的模式和資料。 將專案和分支 ID 換成你的實際值:
databricks postgres create-branch \
projects/my-project \
feature \
--json '{
"spec": {
"source_branch": "projects/my-project/branches/production",
"no_expiry": true
}
}'
備註
建立分支時,必須指定一個過期政策。 用 no_expiry: true 來建立永久分支。
若要在 JSON 規格中使用 shell 變數(例如 $PROJECT_ID 或 $BRANCH_ID),請將 --json 的值用雙引號括起來,並逸出內部引號。
Lakebase 會自動建立帶有主要讀寫運算端點的功能分支。 完成功能分支的開發與測試後,你可以刪除它:
databricks postgres delete-branch projects/$PROJECT_ID/branches/feature
備註
刪除指令會立即回傳,但實際刪除可能需要時間才能完成。 你可以透過執行對應的 get resource 指令來驗證刪除,該指令在資源完全刪除後會回傳錯誤。
更新分支保護
使用 update mask 模式更新資源。 更新遮罩指定要更新哪些欄位:
databricks postgres update-branch \
projects/$PROJECT_ID/branches/$BRANCH_ID \
spec.is_protected \
--json '{
"spec": {
"is_protected": true
}
}'
此範例設 spec.is_protected 為 true,使該分支受到保護。 更新遮罩(spec.is_protected)告訴 API 要更新哪個欄位。 指令會回傳更新後的資源,顯示新值和更新的時間 update_time 戳。
管理運算
取得運算詳細資料
獲取關於終點的詳細資訊:
databricks postgres get-endpoint projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID
該指令會回傳端點類型、自動縮放設定、目前狀態、連線主機、暫停逾時及時間戳記。
擴展讀取能力並使用讀取副本
新增讀取副本以處理增加的讀取流量。 以下範例將讀取副本加入預設生產分支:
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等)的讀取副本來分配讀取工作負載。
更新自動縮放限制
要更新多個欄位,請使用逗號分隔的清單:
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
}
}'
將縮放設定為零
若要將擴縮設為零,請在更新遮罩中加入 spec.suspension。 設定 suspend_timeout_duration (60秒–604800秒)來定義非活動逾時,或 no_suspension: true 停用它。 不要同時設定兩者。 設定 no_suspension: false 無效且會回傳錯誤。 預設情況下,分支 production 啟用了縮放至零(scale to zero)並設有 24 小時逾時。
# Disable scale to zero (compute stays active indefinitely)
databricks postgres update-endpoint \
projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID \
spec.suspension \
--json '{
"spec": {
"no_suspension": true
}
}'
# Enable scale to zero with a 5-minute inactivity timeout (60s–604800s)
databricks postgres update-endpoint \
projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID \
spec.suspension \
--json '{
"spec": {
"suspend_timeout_duration": "300s"
}
}'
管理職務
使用 CLI 來建立並管理 Postgres 角色,以便在分支內存取資料庫。 有關角色類型與認證的詳細指引,請參閱 「建立 Postgres 角色」。
建立角色
建立基於密碼的角色:
databricks postgres create-role projects/$PROJECT_ID/branches/$BRANCH_ID \
--role-id my-app-role \
--json '{"spec": {"postgres_role": "my-app-role"}}'
建立與 Azure Databricks 身份連結的 OAuth 認證角色:
# For a user:
databricks postgres create-role projects/$PROJECT_ID/branches/$BRANCH_ID \
--role-id my-user-role \
--json '{"spec": {"identity_type": "USER", "postgres_role": "user@example.com"}}'
# For a service principal:
databricks postgres create-role projects/$PROJECT_ID/branches/$BRANCH_ID \
--role-id my-sp-role \
--json '{"spec": {"identity_type": "SERVICE_PRINCIPAL", "postgres_role": "<sp-client-id>"}}'
列出並取得角色
列出該分支的所有職務:
databricks postgres list-roles projects/$PROJECT_ID/branches/$BRANCH_ID
了解特定職位的詳細資訊:
databricks postgres get-role projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$ROLE_ID
回應包含系統產生的角色資源名稱(例如, rol-xxxx-xxxxxxxxxx),用於更新與刪除呼叫。
更新角色
使用 update mask 模式來更新角色。 將更新遮罩作為第二個位置參數傳遞。
更新 spec.attributes時,你必須提供三個屬性欄位——API 會替換整個屬性物件:
databricks postgres update-role \
projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$ROLE_ID \
"spec.attributes" \
--json '{"spec": {"attributes": {"createdb": true, "createrole": false, "bypassrls": false}}}'
刪除角色
databricks postgres delete-role projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$ROLE_ID
如果該角色擁有資料庫物件,請在刪除前使用 --reassign-owned-to 轉移所有權:
databricks postgres delete-role \
projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$ROLE_ID \
--reassign-owned-to projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$OTHER_ROLE_ID
管理同步資料表
同步資料表會將 Unity 目錄資料複製到 Lakebase 資料庫,實現低延遲的操作讀取。 使用 create-synced-table,搭配 {catalog}.{schema}.{table} ID:
databricks postgres create-synced-table my-catalog.sales.orders \
--json '{
"spec": {
"source_table_full_name": "main.sales.orders",
"branch": "projects/my-project/branches/production",
"primary_key_columns": ["order_id"],
"scheduling_policy": "SNAPSHOT",
"postgres_database": "databricks_postgres",
"create_database_objects_if_missing": true
}
}'
同步的表格 ID 同時成為 Unity 目錄實體名稱,並識別 Postgres 表格。 取得狀態並刪除一個相同 ID 格式的同步資料表:
# Check status
databricks postgres get-synced-table "synced_tables/my-catalog.sales.orders"
# Delete
databricks postgres delete-synced-table "synced_tables/my-catalog.sales.orders"
create-synced-table 和 create-catalog 是長時間執行的作業。 預設情況下,CLI 會等待完成。 用 --no-wait 來立即退貨或 --timeout 設定自訂等待時間。 參見 長時間執行的操作。
關於同步模式、資料類型映射及容量規劃的詳細指引,請參閱 「以同步資料表服務湖屋資料」。
理解關鍵概念
長時間執行的作業
建立、更新和刪除指令是長時間執行的操作。 預設情況下,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負載包含這些欄位的新值。 只有更新遮罩中列出的欄位會被修改。