如要評估 AlloyDB for PostgreSQL,或在不設定連續複製的情況下遷移現有工作負載,可以直接將 PostgreSQL 適用的 Cloud SQL 備份複製到 AlloyDB 叢集。
本頁面假設您已熟悉 Cloud SQL。如果您是 AlloyDB 新手,請參閱「AlloyDB 總覽」。
如要瞭解如何使用連續資料複製功能,將資料從 Cloud SQL 遷移至 AlloyDB,請參閱「PostgreSQL 適用的資料庫遷移服務至 AlloyDB」。
不支援以下項目:
- 跨專案和跨區域還原
- 使用客戶自行管理加密金鑰 (CMEK) 的執行個體
- 採用 Identity and Access Management (IAM) 群組驗證機制的執行個體
事前準備
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
-
啟用 AlloyDB、Compute Engine 和 Service Networking API (如有尚未啟用的 API)。
啟用 API 所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「Service Usage 管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。 - 請確認您已具備以下條件:
- 必要的 Identity and Access Management (IAM) 權限
- Cloud SQL 備份大小小於 15TB
- AlloyDB 支援的 PostgreSQL 版本
必要的角色
如要取得將 PostgreSQL 適用的 Cloud SQL 備份複製到 AlloyDB 叢集所需的權限,請在專案中授予自己下列 IAM 角色:
- Cloud SQL 檢視者 (
roles/cloudsql.viewer) 或任何包含cloudsql.backupRuns.export權限的自訂角色。 - 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標準叢集,請按照下列步驟操作:
控制台
- 前往 Cloud de Confiance 控制台的「Clusters」(叢集) 頁面。
- 按一下「Migrate data」(遷移資料),然後選取「Copy from Cloud SQL Backup」(從 Cloud SQL 備份複製)。
- 在「Copy from Cloud SQL backup」(從 Cloud SQL 備份複製) 頁面中,啟用必要的 API。如果已啟用 API,則不必重新啟用。
- 在「Select the cluster type」(選取叢集類型) 頁面,選取「Provisioned cluster」(已佈建的叢集)。
- 按一下「選取叢集類型」。
- 選取要複製備份的 Cloud SQL 執行個體,然後按一下「Select instance」(選取執行個體)。您可以篩選 Cloud SQL 執行個體。
系統只會顯示相容的資料庫版本。副本沒有備份,也不會顯示在可用執行個體清單中。 - 選取要匯入的備份,然後按一下「Select backup」(選取備份)。這個頁面會顯示最近的 1,000 個備份。
- 在「Create your provisioned cluster」(建立佈建的叢集) 頁面中,輸入網路資訊。系統預設會填入叢集 ID,但您也可以自訂佈建的叢集。
- 點選「建立叢集」。
作業完成後,系統會自動建立主要執行個體。您會看到新的 AlloyDB 叢集,其中包含從所選 PostgreSQL 適用的 Cloud SQL 備份複製的資料。
將 PostgreSQL 適用的 Cloud SQL 備份複製到 AlloyDB 叢集時,如果資料庫旗標同時存在於 PostgreSQL 適用的 Cloud SQL 和 AlloyDB 中,系統就會遷移資料庫旗標。資源層級權限不會自動遷移。複製完成後,您必須手動設定權限,以及因不相符而未遷移的資料庫旗標。
您可以在「建立佈建叢集」頁面,查看 AlloyDB 支援 PostgreSQL 適用的 Cloud SQL 中的哪些資料庫旗標。
gcloud
如要使用 gcloud CLI,您可以安裝並初始化 gcloud CLI,也可以使用 Cloud Shell。
- 執行
gcloud alloydb clusters migrate-cloud-sql指令:
gcloud alloydb clusters migrate-cloud-sqlCLUSTER_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:PostgreSQL 適用的 Cloud SQL 叢集 ID。CLOUD_SQL_BACKUP_ID:要遷移的 Cloud SQL 備份 ID。這必須是備份 ID。CLOUD_SQL_INSTANCE_ID:要遷移的 Cloud SQL 執行個體 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、POSTGRES_17或POSTGRES_18。資料庫版本必須與 Cloud SQL 備份版本相同。
- 執行
gcloud alloydb operations describe指令,確認備份作業的狀態:
gcloud alloydb operations describeOPERATION_ID\ --region=REGION_ID\ --project=PROJECT_ID更改下列內容:
OPERATION_ID:PostgreSQL 適用的 Cloud SQL 作業名稱。REGION_ID:部署 PostgreSQL 適用的 Cloud SQL 叢集的區域。PROJECT_ID:專案 ID。
- 使用
gcloud alloydb instances create指令建立主要執行個體。
REST API
- 如要取得要還原備份的執行個體備份清單,請呼叫
backupRuns.list方法:GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns更改下列內容:
PROJECT_ID:專案 ID。INSTANCE_ID:執行個體 ID。
如要傳送要求,請選擇以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
下列指令假設您已執行
gcloud init或gcloud auth login,透過使用者帳戶登入gcloud CLI,或使用Cloud Shell自動登入gcloud CLI。您可以執行
gcloud auth list,查看目前使用的帳戶。執行下列指令:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"PowerShell (Windows)
下列指令假設您已執行
gcloud init或gcloud auth login,或使用Cloud Shell,透過使用者帳戶登入gcloud CLI,系統會自動將您登入gcloud CLI。您可以執行
gcloud auth list,查看目前使用的帳戶。執行下列指令:
$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/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns" | Select-Object -Expand Content您會收到類似下方的 JSON 回覆:
回應
如果成功,回應主體會包含
BackupRun物件清單:{ "kind": string, "items": [ { object (BackupRun) } ], "nextPageToken": string }API 回應會以陣列清單的形式傳回執行個體的備份清單,包括
"id": string。 - 呼叫
clusters.restoreFromCloudSQL方法:POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL更改下列內容:
PROJECT_ID:專案 ID。REGION:部署 AlloyDB 叢集的區域。
JSON 要求主體:
{ "clusterId": string, "cluster": { "databaseVersion": "POSTGRES_14/POSTGRES_15/POSTGRES_16/POSTGRES_17/POSTGRES_18", "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,透過使用者帳戶登入gcloud CLI,或使用Cloud Shell自動登入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/v1/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"PowerShell (Windows)
下列指令假設您已執行
gcloud init或gcloud auth login,透過使用者帳戶登入gcloud CLI,或使用Cloud Shell自動登入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/v1/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"|Select-Object -Expand Content您會收到類似下方的 JSON 回覆:
回應
如果成功,回應主體會包含
Operation的執行個體。AlloyDB 會在指定的專案和位置建立新叢集,並從 CloudSQLBackupRunSource 訊息中指定的備份還原磁碟區。
- 叢集處於
READY狀態時,請呼叫projects.locations.clusters.instances.create方法來建立主要執行個體:POST https://alloydb.googleapis.com/v1/{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,透過使用者帳戶登入gcloud CLI,或使用Cloud Shell自動登入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/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"PowerShell (Windows)
下列指令假設您已執行
gcloud init或gcloud auth login,透過使用者帳戶登入gcloud CLI,或使用Cloud Shell自動登入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/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"|Select-Object -Expand Content您會收到類似下方的 JSON 回覆:
回應
如果成功,回應主體會包含新建立的
Operation執行個體。 - 執行個體更新為
READY狀態後,請連線至執行個體,並從 Cloud SQL 快照存取還原的資料。