本頁說明如何將 PostgreSQL 適用的 AlloyDB 叢集資料匯出至 SQL 傾印檔案。
如要瞭解如何將整個資料庫從支援的資料庫伺服器遷移至新的 AlloyDB 執行個體,請參閱「使用資料庫遷移服務,將資料庫遷移至 AlloyDB」。如果您是為了從匯出檔案建立新執行個體而匯出,請考慮從儲存的備份還原叢集。
您可以取消匯出 PostgreSQL 適用的 AlloyDB 叢集資料。詳情請參閱「取消匯出資料」。
事前準備
- 開始匯出作業前,請注意匯出作業會使用資料庫資源,但除非執行個體資源不足,否則不會干擾標準資料庫作業。
- 如果目標 bucket 與來源叢集位於不同區域,則需支付跨區域資料移轉費用。詳情請參閱 PostgreSQL 適用的 AlloyDB 定價。
- 如果物件名稱結尾為
.gz
擴充功能,系統就會啟用壓縮功能。接著,系統會以.gz
格式將物件匯出至 Cloud Storage。 - 多個匯出作業可以平行執行。
從 AlloyDB 匯出資料所需的角色和權限
如要將資料從 AlloyDB 匯出至 Cloud Storage,發起匯出的使用者必須具備下列其中一個身分與存取權管理 (IAM) 角色:
- Cloud AlloyDB 管理員 (
roles/alloydb.admin
) 角色 - 自訂角色,包括下列權限:
alloydb.clusters.get
alloydb.clusters.export
此外,AlloyDB 叢集的服務帳戶必須具備下列其中一個角色:
storage.objectAdmin
IAM 角色- 自訂角色,包括
storage.objects.create
權限
如需 IAM 角色相關說明,請參閱身分與存取權管理。
將 AlloyDB 資料匯出至 SQL 傾印檔案
使用 AlloyDB 執行匯出作業時 (無論是透過 gcloud CLI 或 API),您會使用 pg_dump
公用程式,並搭配必要選項,確保產生的匯出檔案可有效匯回 AlloyDB。
如要將 AlloyDB 叢集資料庫的資料匯出至 Cloud Storage 值區中的 SQL 傾印檔案,請按照下列步驟操作:
gcloud
- 建立 Cloud Storage 值區。
請使用提供的格式,找出要匯出專案的服務帳戶。服務帳戶的格式如下:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
授予服務帳戶 Cloud Storage 值區的權限,以進行匯出作業。
使用
gcloud storage buckets add-iam-policy-binding
將storage.objectAdmin
身分與存取權管理角色授予服務帳戶。如需設定 IAM 權限的說明,請參閱「使用 IAM 權限」。將資料庫匯出至 Cloud Storage bucket。以下列出以 SQL 傾印格式匯出資料的選項:
--async
(選用):立即傳回,不必等待進行中的作業完成。--tables
(選用):要匯出的資料表。--schema-only
(選用):如果設定這個參數,系統只會匯出結構定義。--clean-target-objects
(選用):如果設定此選項,系統會先輸出所有傾印的資料庫物件指令,再輸出建立這些物件的指令。DROP
--if-exist-target-objects
(選用):如果已設定,請使用DROP ... IF EXISTS
指令檢查物件是否存在,再將物件放入--clean-target-objects
模式。
如要使用這些功能,請在
gcloud
指令中加入下列選項。 如要只匯出物件定義 (結構定義),而不匯出資料,請使用–-schema-only
旗標。如要指定要匯出的資料表,請使用--tables=TABLE_NAMES
標記。您可以指定以半形逗號分隔的資料表名稱值或萬用字元模式,藉此指定多個資料表。否則,請從下列指令中移除這些參數:
gcloud alloydb clusters export CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri="gs://BUCKET_NAME/OBJECT_NAME" --tables=TABLE_NAMES --schema-only --clean-target-objects --if-exist-target-objects --sql
alloydb clusters export
指令不含觸發條件或預存程序,但包含檢視區塊。如要匯出觸發程序或預存程序,請使用pg_dump
公用程式。如要進一步瞭解如何使用
alloydb clusters export
指令,請參閱alloydb clusters export
指令參考資料頁面。如果您不需要保留先前設定的 IAM 角色,請立即撤銷該角色。
REST v1
建立匯出的值區:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
使用服務帳戶格式,找出要匯出專案的服務帳戶。
服務帳戶的格式如下:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
授予服務帳戶 Cloud Storage 值區的權限,以執行匯出作業。
使用
gcloud storage buckets add-iam-policy-binding
將storage.objectAdmin
身分與存取權管理角色授予服務帳戶。如需設定 IAM 權限的說明,請參閱「使用 IAM 權限」。匯出資料庫。
請使用下列 HTTP 方法和網址:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- REGION:部署 AlloyDB 叢集的區域。
- CLUSTER_ID:叢集 ID。
- BUCKET_NAME:Cloud Storage bucket 名稱。
- PATH_TO_SQL_FILE:SQL 傾印檔案的路徑。
- DATABASE_NAME:AlloyDB 執行個體內的資料庫名稱。
- TABLES:要匯出的資料表。
- SCHEMA_ONLY:如果為
true
,則只匯出結構定義。 - CLEAN_TARGET_OBJECTS:如果
true
,請先輸出所有傾印的資料庫物件指令,再輸出建立這些物件的指令。DROP
- IF_EXIST_TARGET_OBJECTS:如果
true
,請使用DROP ... IF EXISTS
指令檢查物件是否存在,再以clean_target_objects
模式放置物件。
如要使用這些功能,請將這些參數的值設為
true
。 否則,請將這些值設為false
。如要只匯出物件定義 (結構定義),而不匯出資料,請使用schema_only
旗標。如要指定要匯出的資料表,請使用tables
欄位。如要選取多個資料表,請提供以半形逗號分隔的資料表名稱清單,或在模式中寫入萬用字元。JSON 要求內文:
{ "gcs_destination": { "uri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE" }, "database": "DATABASE_NAME", "sql_export_options": { "schema_only": true, "tables": [ "TABLE1", "TABLE2" ], "clean_target_objects": false, "if_exist_target_objects": true } }
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為
request.json
的檔案中,然後執行下列指令:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"
PowerShell (Windows)
將要求主體儲存在名為
request.json
的檔案中,然後執行下列指令:$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"| Select-Object -Expand Content
您會收到類似以下的 JSON 回應:
回應
{ "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2024-09-17T06:05:31.244428646Z", "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID", "verb": "export", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
如果不需要保留先前設定的 IAM 角色,請立即移除。
如需要求的完整參數清單,請參閱 clusters:export
。