本頁面說明如何將 Cloud SQL 備份檔複製到 PostgreSQL 適用的 AlloyDB 叢集,藉此遷移 PostgreSQL 適用的 Cloud SQL 執行個體。將 Cloud SQL 備份檔複製到 AlloyDB 叢集,即可快速將資料載入 AlloyDB for PostgreSQL,方便您評估或遷移至 AlloyDB。
本頁面假設您已熟悉 Cloud SQL。如果您是 AlloyDB 新手,請參閱 AlloyDB 總覽。
如要瞭解如何使用持續資料複寫,將資料從 Cloud SQL 遷移至 AlloyDB,請參閱「PostgreSQL 適用的資料庫移轉服務至 AlloyDB」。
強化備份功能目前為預先發布版,因此不支援將強化備份還原至 AlloyDB。系統不支援下列項目:
- Cloud SQL Enterprise Plus 版執行個體
- 跨專案和跨區域還原
- 使用客戶自行管理的加密金鑰 (CMEK) 的執行個體
- 使用 Identity and Access Management (IAM) 群組驗證的執行個體
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the AlloyDB, Compute Engine, and Service Networking APIs.
- 請確認下列事項:
- 必要的 身分與存取權管理 (IAM) 權限
- 大小小於 5 TB 的 Cloud SQL 備份
- AlloyDB 支援的 PostgreSQL 版本
必要的角色
如要取得將 PostgreSQL 適用的 Cloud SQL 備份檔複製到 AlloyDB 叢集所需的權限,請在專案中授予自己下列 IAM 角色:
- Cloud SQL 檢視者
(
roles/cloudsql.viewer
) 或任何包含cloudsql.backupRuns.export
權限的自訂角色。 - Cloud AlloyDB 管理員 (
roles/alloydb.admin
)
將 Cloud SQL 備份複製到 AlloyDB 叢集
將 Cloud SQL 備份檔複製到 AlloyDB標準叢集,會將備份檔還原到 AlloyDB 上的相同 PostgreSQL 版本。舉例來說,PostgreSQL 14 Cloud SQL 備份檔會還原到 PostgreSQL 14 標準叢集。請注意,擴充功能版本和 PostgreSQL 次要版本可能不同。
從 Cloud SQL 複製備份時,只能設定 AlloyDB標準 叢集支援的項目。
如要將 Cloud SQL 備份複製到 AlloyDB標準試用叢集,請按照下列步驟操作:
控制台
- 前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
- 按一下「遷移資料」,然後選取「從 Cloud SQL 備份複製」。
- 在「從 Cloud SQL 備份複製」頁面中,啟用必要的 API。如果您已啟用 API,則不必重新啟用。
- 在「選取叢集類型」頁面中,選取「已佈建的叢集」。
- 按一下「選取叢集類型」。
- 選取要複製備份的 Cloud SQL 執行個體,然後按一下「選取執行個體」。您可以篩選 Cloud SQL 執行個體。
系統只會顯示相容的資料庫版本。備用資源沒有備份,也不會顯示在可用執行個體清單中。 - 選取要匯入的備份,然後按一下「選取備份」。這個頁面會顯示最近的 1,000 個備份。
- 在「建立佈建的叢集」頁面中,輸入網路資訊。系統預設會填入叢集 ID,但您也可以自訂佈建的叢集。
- 點選「建立叢集」。
作業完成後,系統會自動建立主要執行個體。您會看到新的 AlloyDB 叢集,其中包含從您選取的 PostgreSQL 適用的 Cloud SQL 備份檔複製的資料。
將 PostgreSQL 適用的 Cloud SQL 備份檔複製到 AlloyDB 叢集時,如果資料庫標記同時存在於 PostgreSQL 適用的 Cloud SQL 和 AlloyDB,系統就會遷移這些標記。資源層級權限不會自動遷移。複製完成後,您必須手動設定權限,以及因不符而未遷移的資料庫標記。
您可以在「建立已佈建的叢集」頁面中,查看 AlloyDB 支援哪些 PostgreSQL 適用的 Cloud SQL 資料庫旗標。
gcloud
如要使用 Google Cloud CLI,可以安裝及初始化 gcloud CLI,也可以使用 Cloud Shell。
- 執行
gcloud beta alloydb clusters migrate-cloud-sql
指令:
gcloud beta alloydb clusters migrate-cloud-sql CLUSTER_ID
--cluster-id=CLUSTER_ID
\
--cloud-sql-backup-id=CLOUD_SQL_BACKUP_ID
\
--cloud-sql-instance-id=CLOUD_SQL_INSTANCE_ID
\
--cloud-sql-project-id=CLOUD_SQL_PROJECT_ID
--password=PASSWORD
\
--region=REGION
\
--database-version=DATABASE_VERSION
\
--subscription-type=STANDARD
更改下列內容:
CLUSTER_ID
:AlloyDB 叢集 ID。CLOUD_SQL_BACKUP_ID
:要從中遷移的 Cloud SQL 備份 ID。這必須是備份 ID。CLOUD_SQL_INSTANCE_ID
:要從中遷移的 CloudSQL 執行個體 ID。這必須是執行個體 ID。CLOUD_SQL_PROJECT_ID
:要從中遷移的 Cloud SQL 專案 ID。這必須是專案 ID。PASSWORD
:在叢集建立期間設定的初始 PostgreSQL 使用者密碼。REGION
:位置,例如asia-east1
或us-east1
。如需完整地區清單,請參閱「地區位置」。DATABASE_VERSION
:叢集的資料庫版本。這必須是下列其中一個值:POSTGRES_14
、POSTGRES_15
或POSTGRES_16
。資料庫版本必須與 Cloud SQL 備份的版本相同。SUBSCRIPTION_TYPE
:叢集的訂閱類型。 必須是下列其中一項:STANDARD
或TRIAL
。
- 執行
gcloud beta alloydb operations describe
指令,確認備份作業的狀態:gcloud beta alloydb operations describe OPERATION_ID \ --region=REGION_ID \ --project=PROJECT_ID
更改下列內容:
OPERATION_ID
:AlloyDB 作業的名稱。REGION_ID
:部署 AlloyDB 叢集的區域。PROJECT_ID
:專案 ID。
- 使用
gcloud alloydb instances create
指令建立主要執行個體。
REST API
- 如要取得執行個體的備份清單,並從中還原備份,請呼叫
backupsRuns.list
方法:GET "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
更改下列內容:
PROJECT_ID
:專案 ID。INSTANCE_ID
:執行個體 ID。
JSON 要求內文:
{ "kind": string, "items": [ { object (BackupRun) } ], "nextPageToken": string }
如要傳送要求,請選擇以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
以下指令假設您已執行
gcloud init
或gcloud auth login
,透過使用者帳戶登入Google Cloud CLI
,或使用Cloud Shell
,自動登入gcloud CLI
。您可以執行
gcloud auth list
查看有效帳戶。將要求主體儲存在名為
request.json
的檔案中,然後執行下列指令:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
PowerShell (Windows)
以下指令假設您已執行
gcloud init
或gcloud auth login
,或使用Cloud Shell
登入gcloud CLI
,這會自動登入gcloud CLI
。您可以執行
gcloud auth list
查看有效帳戶。將要求主體儲存在名為
request.json
的檔案中,然後執行下列指令:$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"|Select-Object -Expand Content
您會收到類似以下的 JSON 回應:
回應
如果成功,回應主體會包含
API 回應會以陣列清單的形式,傳回執行個體的備份清單,包括BackupRun
清單。"id": string,
。 - 呼叫 restoreFromCloudSQL
方法:
POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL
更改下列內容:
PROJECT_ID
:專案 ID。REGION
:部署 AlloyDB 叢集的區域。
JSON 要求內文:
{ "clusterId": string, "cluster": { "databaseVersion": "POSTGRES_14/POSTGRES_15/POSTGRES_16", "subscriptionType": "STANDARD" }, // Union field source can be only one of the following: "cloudsqlBackupRunSource": { object (CloudSQLBackupRunSource) } // End of list of possible types for union field source. }
如要傳送要求,請選擇以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
以下指令假設您已執行
gcloud init
或gcloud auth login
,或使用Cloud Shell
,透過使用者帳戶登入gcloud CLI
,這會自動登入gcloud CLI
。您可以執行
gcloud auth list
查看有效帳戶。將要求主體儲存在名為
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/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"
PowerShell (Windows)
以下指令假設您已執行
gcloud init
或gcloudauth login
,或使用Cloud Shell
,透過使用者帳戶登入gcloud CLI
,這會自動登入gcloud CLI
。您可以執行
gcloud auth list
查看有效帳戶。將要求主體儲存在名為
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/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"|Select-Object -Expand Content
您會收到類似以下的 JSON 回應:
回應
如果成功,回應主體會包含
Operation
的執行個體。系統會在指定專案和位置建立新叢集,並從 CloudSQLBackupRunSource 訊息中指向的備份還原磁碟區。
- 當叢集處於
READY
狀態時,請呼叫projects.locationsinstances.create
方法來建立主要執行個體:POST https://alloydb.googleapis.com/v1beta/{parent=projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID}/instances
更改下列內容:
PROJECT_ID
:專案 ID。REGION
:部署 AlloyDB 叢集的區域。CLUSTER_ID
:叢集 ID。
JSON 要求內文:
{ "instanceId": "string", "instance": { "object": "Instance" } }
要求主體包含
Instance
的執行個體。如要傳送要求,請選擇以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
以下指令假設您已執行
gcloud init
或gcloud auth login
,或使用Cloud Shell
,透過使用者帳戶登入gcloud CLI
,這會自動登入gcloud CLI
。您可以執行
gcloud auth list
查看有效帳戶。將要求主體儲存在名為
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/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"
PowerShell (Windows)
以下指令假設您已執行
gcloud init
或gcloud auth login
,或使用Cloud Shell
,透過使用者帳戶登入gcloud CLI
,這會自動登入gcloud CLI
。您可以執行
gcloud auth list
查看有效帳戶。將要求主體儲存在名為
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/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"|Select-Object -Expand Content
您會收到類似以下的 JSON 回應:
回應
如果成功,回應主體會包含新建立的
Operation
例項。 - 執行個體更新至
READY
狀態後,請連線至執行個體,並存取 Cloud SQL 快照還原的資料。
後續步驟