为实例启用和停用高可用性

本页面介绍如何对实例进行高可用性配置。

您可以在创建实例时对实例进行高可用性配置,也可以为现有实例启用高可用性。

如需详细了解高可用性,请参阅高可用性配置概览

高可用性的旧版配置使用了 failover replica 实例。 新配置不使用 failover replica。 相反,它使用 Google 的区域永久性磁盘,该磁盘会在一个区域的两个地区之间在块级别同步复制数据。如果您的现有 MySQL 实例使用的是旧版高可用性,则可以更新配置以使用当前版本。 如需了解与旧版高可用性配置相关的其他过程,请参阅旧版高可用性配置

创建采用高可用性配置的新实例

在创建实例并为其采用高可用性配置时,Cloud SQL 会将其创建为区域实例。

要创建采用高可用性配置的实例,请按照如下所述操作:

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 创建实例。
  3. 实例信息页面上,选择显示配置选项
  4. 打开备份、恢复和高可用性
  5. 选择高可用性(区域级)单选按钮。

gcloud

  1. 创建区域实例:
    gcloud sql instances create [REGIONAL_INSTANCE_NAME] \
                         --availability-type=REGIONAL \
                         --database-version=[DATABASE_VERSION] \
                         --tier=[MACHINE_TYPE] \
                         --enable-bin-log
    
    如需查看可用参数的完整列表,请参阅 gcloud sql instances create 参考页面。
  2. 配置根用户:
    gcloud sql users set-password root --host=% \
               --instance=[MASTER_INSTANCE_NAME]
               --password=[PASSWORD]
    

cURL

  1. 创建区域实例:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name":"[INSTANCE_NAME]", "region":"[REGION]",
                  "databaseVersion":"[DATABASE_VERSION]",
                  "settings": {
                      "tier":"[MACHINE_TYPE]",
                      "backupConfiguration": {"binaryLogEnabled": true, "enabled": true},
                      "availabilityType":"REGIONAL"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    
    如需查看此请求的完整参数列表,请参阅 instances:insert 页面。
  2. 实例完成初始化后,更新实例上的 root 密码:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "root", "host": "%", "password": "[ROOT_PASSWORD]"}' \
         'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?host=%25&name=root'
    

如需详细了解如何创建实例,请参阅创建实例

对现有实例进行高可用性配置

在重新配置实例时,对现有实例进行高可用性配置会导致几分钟的停机时间。

如需对现有实例进行高可用性配置,请按如下所述操作:

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 点击实例名称,打开其概览页面。
  3. 点击修改
  4. 打开备份、恢复和高可用性
  5. 启用自动备份启用时间点恢复复选框。
  6. 选择高可用性(区域级)
  7. 点击保存

    更新实例时,您会返回到主实例的实例页面。

gcloud

将实例更新为区域实例:

gcloud sql instances patch [INSTANCE_NAME] --availability-type REGIONAL --enable-bin-log --backup-start-time=[HH:MM]

如需了解参考信息,请参阅 gcloud sql instances patch

cURL

  1. 检查主实例,查看是否已启用自动备份和二进制日志记录。这些是高可用性实例所必需的。

        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             -X GET \
             https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[MASTER_INSTANCE_NAME]?fields=settings
    

    输出应类似如下所示:

      "backupConfiguration": {
        "kind": "sql#backupConfiguration",
        "startTime": "12:00",
        "enabled": true,
        "binaryLogEnabled": true
        }
    
  2. 如果 enabledbinaryLogEnabledfalse,请使用 instances:patch 方法同时启用这两项。要启用备份,请将 enabled 设置为 true,并将 startTime 设置为备份时段的开始时间。要启用二进制日志记录,请将 binaryLogEnabled 设置为 true

      gcloud auth login
      ACCESS_TOKEN="$(gcloud auth print-access-token)"
      curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
           --header 'Content-Type: application/json' \
           --data '{"settings" :
                          {"backupConfiguration" :
                               {"startTime": "[HH:MM]", "enabled": true, "binaryLogEnabled": true}}}' \
           -X PATCH \
    
  3. 将实例更新为区域实例:

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"settings": {"availabilityType":"REGIONAL"}}' \
         -X PATCH \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]
    

启动故障转移

测试故障转移是一项可选操作,但建议您执行此项测试,这样便于了解应用在发生故障转移时的响应情况。

如需详细了解故障转移,请参阅故障转移概览

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 点击主实例名称,打开其实例详情页面。
  3. 点击按钮栏中的故障转移按钮。

gcloud

启动故障转移:

gcloud sql instances failover [MASTER_INSTANCE_NAME]

cURL

  1. 描述主实例以获取 settingsVersion 字段的值。
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[MASTER_INSTANCE_NAME]
    
  2. 启动故障转移:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"failoverContext":{"settingsVersion":"[SETTINGS_VERSION]"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[MASTER_INSTANCE_NAME]/failover
    

实例即会执行故障转移,且暂时无法提供数据。

验证实例是否具有高可用性

要验证实例具有高可用性,请执行以下操作:

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 点击一个实例名称,打开其实例详情页面。
  3. 配置下,它会显示高可用性(区域级)

gcloud

gcloud sql instances describe [INSTANCE_NAME]
输出指示 availabilityTypeREGIONAL

cURL

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     -X GET \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[MASTER_INSTANCE_NAME]?fields=settings
输出指示 availabilityTypeREGIONAL

为实例停用高可用性

执行此过程之前,请确保该实例当前没有运行操作。

要停用高可用性,请执行以下操作:

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 选择要停用高可用性的实例。
  3. 实例详情页面上,点击修改
  4. 打开自动备份
  5. 可用性下,点击单个地区
  6. 点击保存。执行此项修改需要重启实例。
  7. 当您看到消息框时,请点击保存并重启

gcloud

如需了解参考信息,请参阅 gcloud sql instances patch
gcloud sql instances patch [INSTANCE_NAME]
           --availability-type ZONAL

cURL

以下请求使用 instances:patch 方法将实例的可用性类型更改为地区。
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"settings": {"availabilityType":"ZONAL"}}' \
     -X PATCH \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]

将实例从旧版高可用性更新为当前高可用性

要将实例从旧版高可用性更新为新的高可用性配置,请执行以下操作:

  1. 删除想要更新的 MySQL 实例上的故障转移副本。 请参阅旧版配置:为实例停用高可用性
  2. 配置实例以使用当前版本的高可用性。请参阅对现有实例进行高可用性配置

后续步骤