本文档介绍了如何创建和暂存 Cloud SQL 蓝绿部署,以执行主要版本升级或配置更改。
准备工作
如需创建和暂存蓝绿部署,请验证您是否拥有所需的角色,以及源实例是否满足部署前提条件。
所需的角色和权限
如需获得创建和暂存蓝绿部署所需的权限,请让管理员为您授予项目的以下 IAM 角色:
- Cloud SQL Editor (
roles/cloudsql.editor) - Cloud SQL Admin (
roles/cloudsql.admin)
对于自定义角色,请确保您拥有以下权限:
cloudsql.blueGreenDeployments.createcloudsql.blueGreenDeployments.getcloudsql.instances.getcloudsql.instances.createcloudsql.operations.get
如需详细了解 Cloud SQL 中的 IAM 角色和权限,请参阅角色和权限。
实例前提条件
在创建蓝绿部署之前,请验证您的生产(蓝色)实例是否满足以下要求:
- 数据库引擎和版本:您的实例必须运行 Cloud SQL for MySQL 版本 5.7、8.0 或 8.4。不支持版本 8.0.18。对于主要版本升级,您可以从版本 8.0 升级到 8.4。
- 二进制日志记录和自动备份:您必须在蓝色实例上启用二进制日志记录和自动备份,才能建立到绿色环境的持续逻辑复制。
- 实例状态:蓝色实例必须处于
RUNNING状态,且没有正在进行的操作或冲突的维护窗口。 不受支持的功能:验证您的实例是否未使用蓝绿部署中不受支持的任何功能,包括以下功能:
最新维护版本:在创建蓝绿部署之前,您的实例必须运行最新维护版本。如需了解详情,请参阅自助维护。
网络架构:您的实例必须使用新网络架构。 不支持使用旧网络架构的实例。
当您触发部署创建时,Cloud SQL 会自动运行一系列自动化预检,以验证复制兼容性和标志。对于主要版本升级,Cloud SQL 还会对源实例运行主要版本升级预检 API,以验证升级准备情况,然后再继续执行工作流。如果预检失败,部署创建会停止,并在操作状态中返回错误。
创建蓝绿部署
您可以有目的地创建蓝绿部署来执行主要版本升级,也可以无目的地创建蓝绿部署来暂存硬件或标记更新。
控制台
-
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 在配置部分中,点击创建蓝绿部署。
- 在创建蓝绿部署页面的部署信息部分,在部署名称字段中输入部署的唯一名称。
- 在部署使用情形列表中,选择以下选项之一:
- 选项 A(主要版本升级):在切换之前,在绿色实例上暂存并测试主要版本升级,请选择主要版本升级。在目标数据库版本列表中,选择目标数据库版本(例如 MySQL 8.4)。
当您创建具有意图的部署时,Cloud SQL 会在创建绿色实例之前自动运行主要版本升级预检,作为该操作的一部分。或者,我们建议您在创建部署之前运行主要版本升级预检,以找出任何升级阻碍因素。
- 选项 B(默认):如需创建与源实例具有相同数据库版本的绿色暂存环境来测试配置或硬件更改,请选择默认。
- 选项 A(主要版本升级):在切换之前,在绿色实例上暂存并测试主要版本升级,请选择主要版本升级。在目标数据库版本列表中,选择目标数据库版本(例如 MySQL 8.4)。
- 点击创建。
gcloud
如需使用 gcloud 创建蓝绿部署,请运行 blue-green-deployments create 命令。
选项 A:通过 intent 创建(主要版本升级)
当您创建具有意图的部署时,Cloud SQL 会在创建绿色实例之前自动运行主要版本升级预检,作为该操作的一部分。或者,您也可以在创建部署之前,对蓝色实例运行主要版本升级预检,以确定是否存在任何升级阻碍因素。
gcloud beta sql blue-green-deployments create DEPLOYMENT_NAME \ --source-instance=SOURCE_INSTANCE_ID \ --target-database-version=TARGET_DATABASE_VERSION \ --region=REGION \ --async
替换以下内容:
- DEPLOYMENT_NAME:部署的唯一名称。
- SOURCE_INSTANCE_ID:蓝色源实例的名称。
- TARGET_DATABASE_VERSION:目标版本(例如
MYSQL_8_4)。 - REGION:蓝色实例的 Google Cloud 区域。
选项 B:创建时未指定意图(硬件或配置)
省略 --target-database-version 标志,以预配与蓝色实例具有相同数据库版本的绿色环境:
gcloud beta sql blue-green-deployments create DEPLOYMENT_NAME \ --source-instance=SOURCE_INSTANCE_ID \ --region=REGION \ --async
创建蓝绿部署需要几分钟才能完成,尤其是在执行主要版本升级时。您可能会看到一条消息,指示操作所花的时间超出了预期。您可以忽略此消息,也可以运行 gcloud sql
operations wait 命令来关闭该消息,然后等待操作完成:
gcloud sql operations wait OPERATION_ID
将 OPERATION_ID 替换为命令返回或消息中显示的操作 ID。
REST v1
如需使用 Cloud SQL Admin API 创建蓝绿部署,请向 blueGreenDeployments.create 方法发送 POST 请求。
选项 A:通过 intent 创建(主要版本升级)
当您创建具有意图的部署时,Cloud SQL 会在创建绿色实例之前自动运行主要版本升级预检,作为该操作的一部分。或者,您也可以在创建部署之前,对蓝色实例运行主要版本升级预检,以确定是否存在任何升级阻碍因素。
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/
locations/REGION/
blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
"sourceInstance": "SOURCE_INSTANCE_ID",
"requestedConfig": {
"databaseVersion": "TARGET_DATABASE_VERSION"
}
}
替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- REGION:蓝色实例的 Google Cloud 区域。
- DEPLOYMENT_NAME:部署的唯一名称。
- SOURCE_INSTANCE_ID:蓝色源实例的名称。
- TARGET_DATABASE_VERSION:目标数据库版本(例如
MYSQL_8_4)。
选项 B:创建时未指定意图(硬件或配置)
省略 requestedConfig 字段,以预配与蓝色实例具有相同数据库版本的绿色环境:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/
locations/REGION/
blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
"sourceInstance": "SOURCE_INSTANCE_ID"
}
REST v1beta4
如需使用 Cloud SQL Admin API 创建蓝绿部署,请向 blueGreenDeployments.create 方法发送 POST 请求。
选项 A:通过 intent 创建(主要版本升级)
当您创建具有意图的部署时,Cloud SQL 会在创建绿色实例之前自动运行主要版本升级预检,作为该操作的一部分。或者,您也可以在创建部署之前,对蓝色实例运行主要版本升级预检,以确定是否存在任何升级阻碍因素。
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/
locations/REGION/
blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
"sourceInstance": "SOURCE_INSTANCE_ID",
"requestedConfig": {
"databaseVersion": "TARGET_DATABASE_VERSION"
}
}
替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- REGION:蓝色实例的 Google Cloud 区域。
- DEPLOYMENT_NAME:部署的唯一名称。
- SOURCE_INSTANCE_ID:蓝色源实例的名称。
- TARGET_DATABASE_VERSION:目标数据库版本(例如
MYSQL_8_4)。
选项 B:创建时未指定意图(硬件或配置)
省略 requestedConfig 字段,以预配与蓝色实例具有相同数据库版本的绿色环境:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/
locations/REGION/
blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
"sourceInstance": "SOURCE_INSTANCE_ID"
}
监控部署状态
创建是一项长时间运行的操作 (LRO)。在过渡期间,Cloud SQL 会预配绿色实例、升级该实例(如果请求了主要版本升级),并启动持续的逻辑复制。
查看蓝绿部署的进度和状态:
控制台
-
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 找到蓝绿部署状态卡片,以查看部署状态。
- 如需查看详细的配置任务和进度,请点击详情以打开部署概览页面。
gcloud
如需使用 gcloud 检查蓝绿部署的进度和状态,请运行 blue-green-deployments describe 命令:
gcloud beta sql blue-green-deployments describe DEPLOYMENT_NAME \ --region=REGION
替换以下内容:
- DEPLOYMENT_NAME:蓝绿部署的名称。
- REGION:创建部署的 Google Cloud 区域。
如需等待创建操作完成,请运行 gcloud sql
operations wait 命令:
gcloud sql operations wait OPERATION_ID
将 OPERATION_ID 替换为创建操作的 ID。
REST v1
如需使用 Cloud SQL Admin API 检查蓝绿部署的进度和状态,请向 blueGreenDeployments.get 方法发送 GET 请求:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/ locations/REGION/ blueGreenDeployments/DEPLOYMENT_NAME
替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- REGION:创建部署的 Google Cloud 区域。
- DEPLOYMENT_NAME:蓝绿部署的名称。
REST v1beta4
如需使用 Cloud SQL Admin API 检查蓝绿部署的进度和状态,请向 blueGreenDeployments.get 方法发送 GET 请求:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/ locations/REGION/ blueGreenDeployments/DEPLOYMENT_NAME
替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- REGION:创建部署的 Google Cloud 区域。
- DEPLOYMENT_NAME:蓝绿部署的名称。
在命令输出或 Google Cloud 控制台中,监控 state 字段以跟踪部署生命周期:
PROVISIONING:正在创建、升级(如果已请求)绿色实例,并将其连接到持续逻辑复制。SWITCHOVER_READY:初始复制已完成,并且持续的逻辑复制处于活动状态。部署已准备好进行验证、测试和切换。SWITCHOVER_NOT_READY:部署已完成配置,但无法启动切换(例如,如果复制中断或errorDetail中报告了问题)。
如需详细了解所有部署生命周期阶段,请参阅部署生命周期和状态。
在部署状态变为 SWITCHOVER_READY 之前,请勿继续描述部署、验证应用工作负载或开始切换。