本页介绍如何升级 MySQL 实例的次要版本。如需了解受支持的版本,请参阅数据库版本及版本政策。
在每次发布新的次要版本时,数据库提供商都会在其中发布新功能、安全补丁程序、问题修复和性能改进。此外,Cloud SQL 会在维护期间定期为您更新次要版本。
但 MySQL 8.0 不支持降级。因此,其次要版本升级不会自动包含在例行维护中。您可以在创建实例时指定 Cloud SQL for MySQL 8.0 的次要版本,也可以通过后续的某次升级流程指定次要版本,本页面介绍了这两种方式。
在升级到新的 MySQL 8.0 次要版本之前,请先自行熟悉其中的变化。请参阅 MySQL 8.0 版本说明。如果您使用的是 Cloud SQL for MySQL 5.6 或 5.7,Cloud SQL 会自动管理实例的次要版本。在您预配新实例时,Cloud SQL 会自动使用最新可用数据库版本配置您的实例。在例行维护期间,Cloud SQL 会自动将您的实例升级到最新的受支持版本。
要升级 MySQL 8.0 实例的数据库次要版本,您需要使用首选次要版本更新实例,而且这个版本必须高于当前安装的次要版本。预配实例后,您就不能再还原到未指定的次要版本。
升级之前
Cloud SQL 支持 MySQL 8.0 实例的次要版本升级。MySQL 8.0 不允许降级。因此,在升级主实例之前,请先执行以下步骤以确保数据安全。
选择数据库的目标次要版本。
gcloud
如需了解如何安装和开始使用 gcloud CLI,请参阅安装 gcloud CLI。如需了解如何启动 Cloud Shell,请参阅使用 Cloud Shell。
如需了解数据库的哪些次要版本可进行就地升级,请执行以下操作:
- 运行以下命令:
- 在命令的输出中,找到标记为
upgradableDatabaseVersions
的部分。 - 每个子部分都会返回一个可升级的数据库版本。在每个子部分中,请查看以下字段。
name
:数据库版本字符串,其中包含 Cloud SQL for MySQL 次要版本就地升级的数据库目标主要版本和次要版本。
gcloud sql instances describe INSTANCE_NAME
将 INSTANCE_NAME 替换为实例名称。
REST v1
如需了解数据库的哪些次要版本可进行就地升级,请使用 Cloud SQL Admin API 的
instances.get
方法。在使用任何请求数据之前,请先进行以下替换:
- INSTANCE_NAME:实例名称。
HTTP 方法和网址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
upgradableDatabaseVersions: { major_version: "MYSQL_8_0" name: "MYSQL_8_0_36" display_name: "MySQL 8.0.36" }
REST v1beta4
如需了解数据库的哪些次要版本可进行就地升级,请使用 Cloud SQL Admin API 的
instances.get
方法。在使用任何请求数据之前,请先进行以下替换:
- INSTANCE_NAME:实例名称。
HTTP 方法和网址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
upgradableDatabaseVersions: { major_version: "MYSQL_8_0" name: "MYSQL_8_0_36" display_name: "MySQL 8.0.36" }
如需查看 Cloud SQL 支持的数据库版本的完整列表,请参阅数据库版本和版本政策。
在预演环境中对您的升级执行测试。
创建生产实例的克隆,用作预演实例。这将创建一个使用相同主要版本和次要版本的新数据库实例。
在预演实例上执行次要版本升级。
运行工作负载测试,以验证升级是否成功、应用是否按预期运行。在测试成功的情况下,继续升级您的读取副本实例。
升级您的读取副本实例。
将数据库中的所有读取副本升级到目标次要版本。
验证您的应用是否按预期工作。
备份您的主实例。
请备份您的主实例,就像执行任何重大数据库更新时一样。
升级次要版本
您可以使用 gcloud
或 REST API 指定一个现有实例的次要版本。在不使用数据库的时候执行次要版本升级。在此操作期间实例会重启,从而造成停机。如果当前安装的版本高于所请求的版本,则请求会被拒绝。
gcloud
使用带有 --database-version
标志的 gcloud sql instances patch
命令。
在运行命令之前替换以下变量:
- INSTANCE_NAME:实例的名称。
- DATABASE_VERSION:实例的数据库版本。如果您未指定此标志,则系统使用默认主要版本。
gcloud sql instances patch INSTANCE_NAME \ --database-version=DATABASE_VERSION
REST v1
将 PATCH 请求与 instances:patch 方法和 databaseVersion
标志结合使用。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- INSTANCE_ID:实例 ID
- DATABASE_VERSION:要升级到的数据库版本。
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{ "databaseVersion": "DATABASE_VERSION" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2022-07-17T20:23:15.540Z", "operationType": "UPDATE", "name": "fa3f7304-ccf6-4d2f-a6f5-24df00000032", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/fa3f7304-ccf6-4d2f-a6f5-24df00000032", "targetProject": "PROJECT_ID" }
REST v1beta4
将 PATCH 请求与 instances:patch 方法和 databaseVersion
标志结合使用。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- INSTANCE_ID:实例 ID
- DATABASE_VERSION:要升级到的数据库版本。
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID
请求 JSON 正文:
{ "databaseVersion": "DATABASE_VERSION" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2022-07-17T20:23:15.540Z", "operationType": "UPDATE", "name": "fa3f7304-ccf6-4d2f-a6f5-24df00000032", "targetId": "INSTANCE-ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/fa3f7304-ccf6-4d2f-a6f5-24df00000032", "targetProject": "PROJECT_ID" }
检查数据库次要安装版本
查看实例摘要信息时,数据库次要安装版本会显示在“配置”部分中。
回滚升级
如果您在测试升级时发现存在问题,则可能需要回滚数据库,以恢复运行先前次要版本的数据库实例。
如需恢复升级前的备份,请完成以下步骤:
- 预配使用先前的次要版本的恢复数据库实例。
- 将该恢复数据库实例上的设置配置为升级前状态。
- 恢复您存储到恢复实例的升级前备份。
作为恢复备份的替代方案,您可以执行时间点恢复并创建新实例。