将实例升级到新的网络架构


本页面介绍如何将 Cloud SQL 实例从旧网络架构升级到新网络架构。

此 Cloud SQL 网络架构升级页面仅适用于某些 Cloud SQL 实例。 如果您的 Cloud SQL 实例使用 2021 年 8 月之前创建的 Virtual Private Cloud (VPC) 网络项目,则您需要升级实例的 Cloud SQL 网络架构。

概览

下表显示了新网络架构与旧网络架构相比的优势:

能力 旧网络架构 新网络架构
使用 Database Migration Service 从 Cloud SQL 迁移到 AlloyDB for PostgreSQL 要求您为迁移配置专用 IP 地址 无需额外网络配置。

例如,从 Cloud SQL 迁移到 AlloyDB for PostgreSQL
使用专用 IP 将您的 Cloud SQL 实例连接到专用服务(如 Cloud Build 或 Vertex AI) 由于网络对等互连不传递性而不受支持 支持
符合 Assured Workloads 要求的实例 不支持 支持
托管式 Microsoft AD 不支持 支持
Private Service Connect 不支持 支持
每个项目的默认 Cloud SQL 实例配额 100 1000

规划升级

在升级 Cloud SQL 实例的网络架构之前,请根据以下升级限制条件规划升级:

  • 如果您升级网络架构,则实例的停机时间平均长达 4 分钟。

  • 如果存在正在进行的数据迁移,则无法在数据迁移期间将源实例升级到新架构。

  • 如果您从外部来源连接到实例,请验证是否已更新所有对等互连连接,以便导出自定义路由。

  • 如果您使用的是服务边界,请验证是否包含共享 VPC 宿主项目。如果未包含此项目,迁移将会失败。

  • 您无法在 Cloud SQL 实例超过 300 个的网络上升级实例的网络架构。

  • 如果您的网络在同一区域中包含两个或多个使用专用 IP 地址的实例,则 Cloud SQL 必须使用您分配的专用服务访问通道 IP 地址范围内的额外 /24 子网范围,以在新网络架构中托管这些实例。这是临时性占用,后续发生 Cloud SQL 维护事件期间会将其移除。

规划升级网络项目中的所有 Cloud SQL 实例

您的 Cloud SQL 实例可以与 VPC 网络位于同一项目中,也可以位于单独的项目中。托管 VPC 网络的项目是网络项目

网络项目可以以双栈模式运行,这意味着它可以同时托管 Cloud SQL 实例,同时使用旧网络架构和新网络架构。如果项目中至少有一个实例使用旧架构,就会出现这种情况。因此,Cloud SQL 无法将项目升级到新架构。

如需查询项目中所有实例的网络架构,您可以使用 gcloud CLI 或 API。

双栈项目的注意事项

使用双栈项目时,请注意以下事项:

  • 隐式升级实例:如果您修改实例的专用网络或在双栈项目中启用专用 IP 地址,Cloud SQL 可能会隐式将实例升级到新的网络架构。
  • 不会降级架构:网络更改绝不会降级实例的网络架构。
  • 拒绝请求:如果网络更改需要降级才能完成,Cloud SQL 会拒绝该请求。

为避免潜在的冲突并确保顺利升级网络,我们建议您计划将项目中的所有实例升级到新架构。

升级 Cloud SQL 网络架构

如需升级 Cloud SQL 实例的网络架构,请执行以下操作:

  1. 检查单个 Cloud SQL 实例多个 Cloud SQL 实例的网络架构。
  2. 升级 Cloud SQL 实例的网络架构

检查单个 Cloud SQL 实例的网络架构

如需检查单个实例的当前网络架构,请使用 gcloud sql instances describe 命令或 instances.get 方法。

gcloud

如需了解如何安装和开始使用 gcloud CLI,请参阅安装 gcloud CLI。如需了解如何启动 Cloud Shell,请参阅使用 Cloud Shell

如需检查单个实例的网络架构,请运行以下命令:

   gcloud sql instances describe INSTANCE_NAME
   

如果实例使用旧的网络架构,则响应类似于以下内容:

   name: INSTANCE_NAME
   project: PROJECT_ID
   ...
   sqlNetworkArchitecture: OLD_NETWORK_ARCHITECTURE
  

如果实例使用新的网络架构,则响应类似于以下内容:

   name: INSTANCE_NAME
   project: PROJECT_ID
   ...
   sqlNetworkArchitecture: NEW_NETWORK_ARCHITECTURE
  

sqlNetworkArchitecture 参数指示您的实例使用的是旧网络架构 (OLD_NETWORK_ARCHITECTURE) 还是新网络架构 (NEW_NETWORK_ARCHITECTURE)。

REST v1

如需检查实例的网络架构,请使用 Cloud SQL Admin API 的 instances.get 方法。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:项目 ID。
  • INSTANCE_NAME:实例名称。
  • NETWORK_ARCHITECTURE_TYPE:网络架构类型定义如下:
    • OLD_NETWORK_ARCHITECTURE:实例使用旧网络架构。
    • NEW_NETWORK_ARCHITECTURE:实例使用新网络架构。

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

请求 JSON 正文:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": sql#instance
  "name": INSTANCE_NAME
  "project": PROJECT_ID
  "sqlNetworkArchitecture": enum (SqlNetworkArchitecture)
  ...
}

REST v1beta4

如需检查实例的网络架构,请使用 Cloud SQL Admin API 的 instances.get 方法。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:项目 ID。
  • INSTANCE_NAME:实例名称。
  • NETWORK_ARCHITECTURE_TYPE:网络架构类型定义如下:
    • OLD_NETWORK_ARCHITECTURE:实例使用旧网络架构。
    • NEW_NETWORK_ARCHITECTURE:实例使用新网络架构。

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

请求 JSON 正文:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": sql#instance
  "name": INSTANCE_NAME
  "project": PROJECT_ID
  "sqlNetworkArchitecture": enum (SqlNetworkArchitecture)
  ...
}

检查多个 Cloud SQL 实例的网络架构

如需检查项目中多个实例的网络架构,请使用 gcloud sql instances list 命令或 instance.list 方法。

gcloud

如需检查项目中多个实例的网络架构,请运行以下命令:

gcloud sql instances list --show-sql-network-architecture

输出类似于以下内容。

NAME        DATABASE_VERSION LOCATION   ...     SQL_NETWORK_ARCHITECTURE
instance_1  POSTGRES_13      asia-northeast1-b  OLD_NETWORK_ARCHITECTURE
instance_2  MYSQL_5_7        europe-west1-d     NEW_NETWORK_ARCHITECTURE
...

REST v1

如需检查项目中多个实例的网络架构,请使用 instance.list 方法。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:项目 ID。
  • NETWORK_ARCHITECTURE_TYPE:网络架构类型,如下所示::
    • OLD_NETWORK_ARCHITECTURE:实例使用旧网络架构。
    • NEW_NETWORK_ARCHITECTURE:实例使用新网络架构。

HTTP 方法和网址:

LIST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

请求 JSON 正文:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": sql#instance
  "name": INSTANCE_NAME
  "project": PROJECT_ID
  "sqlNetworkArchitecture": enum (SqlNetworkArchitecture)
  ...
}

REST v1beta4

如需检查项目中多个实例的网络架构,请使用 instance.list 方法。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:项目 ID。
  • NETWORK_ARCHITECTURE_TYPE:网络架构类型定义如下:
    • OLD_NETWORK_ARCHITECTURE:实例使用旧网络架构。
    • NEW_NETWORK_ARCHITECTURE:实例使用新网络架构。

HTTP 方法和网址:

LIST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances

请求 JSON 正文:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": sql#instance
  "name": INSTANCE_NAME
  "project": PROJECT_ID
  "sqlNetworkArchitecture": enum (SqlNetworkArchitecture)
  ...
}

升级单个 Cloud SQL 实例的网络架构

如需升级单个实例的网络架构,请使用 gcloud sql instances patch 命令、instance.update 方法或 instance.patch 方法。

gcloud

如需升级实例的网络架构,请运行以下命令:

gcloud sql instances patch INSTANCE_NAME --upgrade-sql-network-architecture

升级操作需要几分钟时间。

升级期间,会启动一个长时间运行的操作,并返回操作令牌:

operation_id

REST v1

如需升级实例的网络架构,请使用 Cloud SQL Admin API 的 instance.updateinstance.patch 方法。

升级 Cloud SQL 网络架构时,请求中不允许对实例进行其他更新。请求正文包含 DatabaseInstance 对象的一个实例,其中 sqlNetworkArchitecture 设置为 NEW_NETWORK_ARCHITECTURE

升级期间,会启动一个长时间运行的操作,并返回操作令牌:

operation_id

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:项目 ID。
  • INSTANCE_NAME:实例名称。
  • NETWORK_ARCHITECTURE_TYPE:网络架构类型定义如下:
    • OLD_NETWORK_ARCHITECTURE:实例使用旧网络架构。
    • NEW_NETWORK_ARCHITECTURE:实例使用新网络架构。

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

请求 JSON 正文:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": sql#instance,
  "targetLink": string,
  "status": enum (SqlOperationStatus),
  "name": string,
  "insertTime": string,
  "startTime": string,
  "endTime": string
  ...
}

如果实例的升级失败,请重试升级操作。

REST v1beta4

如需升级实例的网络架构,请使用 Cloud SQL Admin API 的 instance.update methodinstance.patch method

升级 Cloud SQL 网络架构时,请求中不允许对实例进行其他更新。请求正文包含 DatabaseInstance 对象的一个实例,其中 sqlNetworkArchitecture 设置为 NEW_NETWORK_ARCHITECTURE

升级期间,会启动一个长时间运行的操作,并返回以下操作令牌:

operation_id

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:项目 ID。
  • INSTANCE_NAME:实例名称。
  • NETWORK_ARCHITECTURE_TYPE:网络架构类型定义如下:
    • OLD_NETWORK_ARCHITECTURE:实例使用旧网络架构。
    • NEW_NETWORK_ARCHITECTURE:实例使用新网络架构。

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

请求 JSON 正文:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": sql#instance,
  "targetLink": string,
  "status": enum (SqlOperationStatus),
  "name": string,
  "insertTime": string,
  "startTime": string,
  "endTime": string
  ...
}

如果实例升级因任何原因失败,您可以重试升级操作。

常见问题解答

本部分提供了有关升级 Cloud SQL 网络架构的常见问题解答。

升级对 Cloud SQL 实例有何影响?

升级网络架构时,Cloud SQL 实例处于“维护”状态。在此状态下,实例平均会经历长达 4 分钟的停机时间。在升级完成之前,不允许对实例进行任何其他更改。您的项目或网络中的其他实例不会受升级的影响。

升级后,所有功能是否都保持不变?

Cloud SQL 实例的所有功能在新架构上的工作方式都与在旧架构上相同。将实例升级为使用新网络架构后,如果要切换该实例的网络,请确保目标网络中的所有实例也已升级到新网络架构。

哪些实例使用旧网络架构?

2021 年 8 月以后创建的所有新项目都会自动使用新网络架构。现有项目可以包含超过两年的 Cloud SQL 实例,并且这些实例仍使用旧网络架构。因此,现有项目中的所有实例都必须升级,然后该项目中的任何新实例才能开始使用新网络架构。

是否所有新 Cloud SQL 实例都在新网络架构上创建?

默认情况下,在 2021 年 8 月以后创建的项目中创建的新 Cloud SQL 实例都会使用新网络架构。

如果要在 2021 年 8 月之前创建的项目中创建实例,并使用新网络架构,则必须将该项目中的所有现有实例都更新为新网络架构。如果您使用的是共享 VPC,则必须更新参与共享 VPC 的项目中的所有实例。

更新项目中的所有现有实例后,请等待几个小时,然后再在项目中创建任何实例。您在项目中创建的新实例将使用新网络架构。

能否使用一条命令更新项目中的所有实例?

否,升级为新网络架构基于每个实例。

如果我升级主实例,副本是否会自动升级?

否,升级为新网络架构基于每个实例。每个副本均视为单独的实例,必须单独升级。这意味着,如果主实例升级并且副本使用旧网络架构,则副本不受影响。反之亦然。如果您升级副本,则主实例不会受到影响。

我收到了一条通知,告知我的 Cloud SQL 实例的网络架构将升级。我需要做什么?

您无需执行任何操作。

对于某些实例,当在专用网络上进行自动升级时,请求会暂时被拒绝。如需解决此问题,您可以按照升级单个 Cloud SQL 实例的网络架构中的过程自行升级实例的网络架构。

当我尝试升级实例时,收到“outside the reserved IP address range”(超出预留的 IP 地址范围)错误。我需要做什么?

如需在具有专用 IP 的 VPC 网络中使用 Cloud SQL 实例,请在为该 VPC 网络设置专用服务访问通道时分配 IP 地址范围。

例如,如果分配的 IP 地址范围发生更改或被删除,您可能会遇到类似于以下内容的错误:

Network architecture upgrade not allowed for private-ip instance PROJECT_ID:INSTANCE_NAME
whose IP address range 10.0.0.0/24 is outside the reserved IP address range for
private services access. Re-allocate the IP address range for private services access and retry.

在此示例中,原始分配的 IP 地址范围的名称为 google-managed-services-VPC_NETWORK_NAME,原始分配的 IP 地址范围为 10.0.0.0/16。然后,您创建一个专用 IP 地址为 10.0.0.1 的实例。如果 IP 地址范围 google-managed-services-VPC_NETWORK_NAME 被删除,或者更新为引用范围 10.1.0.0/16,则此范围不涵盖实例的专用 IP 地址 10.0.0.1。之后,当您尝试升级实例的网络架构时,遇到 outside the reserved IP address range 错误。

如需解决此问题,请按照为 Cloud SQL 配置专用服务访问通道中的过程操作。将包含实例 IP 地址的 IP 地址范围重新分配到为专用服务访问通道分配的范围中。您至少可以分配错误消息中报告的 IP 地址范围(在上述示例中为 10.0.0.0/24)。

然后重试网络架构升级。

后续步骤