本页面介绍如何将 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 实例的网络架构,请执行以下操作:
检查单个 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.update
或 instance.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 method
或 instance.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 实例都在新网络架构上创建?
- 能否使用一条命令更新项目中的所有实例?
- 如果我升级主实例,副本是否会自动升级?
- 我收到了一条通知,其中指出我的 Cloud SQL 实例的网络架构将升级。我需要做什么?
- 当我尝试升级实例时,收到“outside the reserved IP address range”(超出预留的 IP 地址范围)错误。我需要做什么?
升级对 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
)。
然后重试网络架构升级。
后续步骤
- 详细了解 Private Service Connect
- 详细了解 Assured Workloads
- 详细了解如何为 Cloud SQL 配置专用服务访问通道
- 详细了解如何将 Database Migration Service 迁移到 AlloyDB for PostgreSQL