如需评估 AlloyDB for PostgreSQL 或迁移现有工作负载,而无需设置持续复制,您可以将 Cloud SQL for PostgreSQL 备份直接复制到 AlloyDB 集群。
本页面假定您熟悉 Cloud SQL。如果您是刚开始接触 AlloyDB,请参阅 AlloyDB 概览。
如需了解如何使用持续数据复制将数据从 Cloud SQL 迁移到 AlloyDB,请参阅 Database Migration Service for PostgreSQL 到 AlloyDB。
不支持:
- 跨项目和跨区域恢复
- 使用客户管理的加密密钥 (CMEK) 的实例
- 使用 Identity and Access Management (IAM) 群组身份验证的实例
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
-
启用 AlloyDB、Compute Engine 和 Service Networking API(如果尚未启用)。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。 - 确保您拥有以下各项:
- 必要的 Identity and Access Management (IAM) 权限
- 大小小于 15TB 的 Cloud SQL 备份
- AlloyDB 支持的 PostgreSQL 版本
所需的角色
如需获得将 Cloud SQL for PostgreSQL 备份复制到 AlloyDB 集群所需的权限,请向自己授予项目的以下 IAM 角色:
- Cloud SQL Viewer (
roles/cloudsql.viewer) 或包含cloudsql.backupRuns.export权限的任何自定义角色。 - AlloyDB Admin
(
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 控制台中,前往集群页面。
- 点击迁移数据,然后选择从 Cloud SQL 备份复制。
- 在从 Cloud SQL 备份复制页面中,启用所需的 API。如果您已启用相应 API,则无需重新启用这些 API。
- 在选择集群类型页面上,选择预配的集群。
- 点击选择集群类型。
- 选择要从中复制备份的 Cloud SQL 实例,然后点击选择实例。您可以过滤 Cloud SQL 实例。
系统仅显示兼容的数据库版本。副本没有备份,不会显示在可用实例列表中。 - 选择要从中导入的备份,然后点击选择备份。此页面会显示最近 1,000 个备份。
- 在创建预配的集群页面中,输入您的网络信息。默认情况下,系统会填充集群 ID,但您也可以自定义预配的集群。
- 点击创建集群。
操作完成后,系统会自动创建主实例。您会看到一个新的 AlloyDB 集群,其中包含从您选择的 Cloud SQL for PostgreSQL 备份复制的数据。
将 Cloud SQL for PostgreSQL 备份复制到 AlloyDB 集群时,如果数据库标志处于 Cloud SQL for PostgreSQL 和 AlloyDB 中,则数据库标志会迁移。系统不会自动迁移资源级别权限。复制完成后,您必须手动设置权限以及因不匹配而未迁移的数据库标志。
您可以在创建预配的集群页面上查看 AlloyDB 支持的 Cloud SQL for PostgreSQL 数据库标志。
gcloud
如需使用 Google Cloud 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:AlloyDB 集群 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:AlloyDB 操作的名称。REGION_ID:部署 AlloyDB 集群的区域。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登录Google Cloud 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登录gcloud CLI,或者使用了Cloud Shell,这会使您自动登录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 快照恢复的数据。