升级数据库次要版本

本页介绍如何升级 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 企业 Plus 版实例,则次要版本升级会在几乎没有停机时间的情况下完成。

升级之前

Cloud SQL 支持 MySQL 8.0 实例的次要版本升级。MySQL 8.0 不允许降级。因此,在升级主实例之前,请先执行以下步骤以确保数据安全。

  1. 选择数据库的目标次要版本

    gcloud

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

    如需了解数据库的哪些次要版本可进行就地升级,请执行以下操作:

    1. 运行以下命令:
    2. gcloud sql instances describe INSTANCE_NAME
         

      INSTANCE_NAME 替换为实例名称。

    3. 在命令的输出中,找到标记为 upgradableDatabaseVersions 的部分。
    4. 每个子部分都会返回一个可升级的数据库版本。在每个子部分中,请查看以下字段。
      • name:数据库版本字符串,其中包含 Cloud SQL for MySQL 次要版本就地升级的数据库目标主要版本和次要版本。

    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 支持的数据库版本的完整列表,请参阅数据库版本和版本政策

  2. 在预演环境中对您的升级执行测试。

    1. 创建生产实例的克隆,用作预演实例。这将创建一个使用相同主要版本和次要版本的新数据库实例。

    2. 在预演实例上执行次要版本升级。

    3. 运行工作负载测试,以验证升级是否成功、应用是否按预期运行。在测试成功的情况下,继续升级您的读取副本实例。

  3. 升级您的读取副本实例。

    1. 将数据库中的所有读取副本升级到目标次要版本。

    2. 验证您的应用是否按预期工作。

  4. 备份您的主实例。

    请备份您的主实例,就像执行任何重大数据库更新时一样。

升级次要版本

您可以使用 gcloud 或 REST API 指定一个现有实例的次要版本。在不使用数据库的时候执行次要版本升级。如果您的实例需要重启,那么您的实例会出现一些停机时间。Cloud SQL 企业 Plus 版实例的停机时间几乎为零。如果安装的版本高于所请求的版本,则请求会被拒绝。

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"
}

检查数据库次要安装版本

查看实例摘要信息时,数据库次要安装版本会显示在“配置”部分中。

回滚升级

如果您在测试升级时发现存在问题,则可能需要回滚数据库,以恢复运行先前次要版本的数据库实例。

如需恢复升级前的备份,请完成以下步骤:

  1. 预配使用先前的次要版本的恢复数据库实例。
  2. 将该恢复数据库实例上的设置配置为升级前状态。
  3. 恢复您存储到恢复实例的升级前备份。

作为恢复备份的替代方案,您可以执行时间点恢复并创建新实例。