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

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

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

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

高可用性的旧版配置使用了 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=[PRIMARY_INSTANCE_NAME]
               --password=[PASSWORD]
    

REST v1beta4

如需查看此请求的完整参数列表,请参阅 instances:insert 页面。

创建区域实例。

  1. 在使用下面的请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-name:实例名称
    • database-version:数据库版本枚举字符串
    • region:GCP 区域
    • machine-type:机器类型

    HTTP 方法和网址:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances

    请求 JSON 正文:

    {
      "name": "instance-name",
      "region": "region",
      "databaseVersion": "database-version",
       "settings": {
         "tier": "machine-type",
         "backupConfiguration": {
             "binaryLogEnabled": true,
             "enabled": true
          },
          "availabilityType": "REGIONAL"
       }
    }
    

    如需发送您的请求,请展开以下选项之一:

    您应该会收到类似以下内容的 JSON 响应:

  2. 实例完成初始化后,更新实例上的 root 密码:

    在使用下面的请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID
    • password:新的根用户密码

    HTTP 方法和网址:

    PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=root'

    请求 JSON 正文:

    {
       "name": "root",
       "host": "%",
       "password": "password"}
    

    如需发送您的请求,请展开以下选项之一:

    您应该会收到一个成功的状态代码 (2xx) 和一个空响应。

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

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

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

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

控制台

  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

REST v1beta4

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

    在使用下面的请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    {
      "kind": "sql#instance",
      "state": "RUNNABLE",
      "databaseVersion": "MYSQL_5_7",
      "settings": {
        "authorizedGaeApplications": [],
        "tier": "db-f1-micro",
        "kind": "sql#settings",
        "pricingPlan": "PER_USE",
        "replicationType": "SYNCHRONOUS",
        "activationPolicy": "ALWAYS",
        "ipConfiguration": {
          "authorizedNetworks": [],
          "ipv4Enabled": true
        },
        "locationPreference": {
          "zone": "asia-east1-a",
          "kind": "sql#locationPreference"
        },
        "dataDiskType": "PD_SSD",
        "backupConfiguration": {
          "startTime": "08:00",
          "kind": "sql#backupConfiguration",
          "enabled": true,
          "binaryLogEnabled": true
        },
        "settingsVersion": "13",
        "storageAutoResizeLimit": "0",
        "storageAutoResize": true,
        "dataDiskSizeGb": "10"
      },
      "etag": "etag-id",
      "ipAddresses": [
        {
          "type": "PRIMARY",
          "ipAddress": "10.0.0.1"
        }
      ],
      "serverCaCert": {
        "kind": "sql#sslCert",
        "certSerialNumber": "0",
        "cert": "certificate-id",
        "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
        "sha1Fingerprint": "sha-id",
        "instance": "instance-id",
        "createTime": "2019-06-28T22:46:35.052Z",
        "expirationTime": "2029-06-25T22:47:35.052Z"
      },
      "instanceType": "CLOUD_SQL_INSTANCE",
      "project": "project-id",
      "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
      "backendType": "SECOND_GEN",
      "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "connectionName": "project-id:region:instance-id",
      "name": "instance-id",
      "region": "asia-east1",
      "gceZone": "asia-east1-a"
    }
    

    输出包含类似于以下内容的部分:

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

    在使用下面的请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID(主实例或副本实例)
    • start-time:采用“HH:MM”格式表示的时间
    • enabled:对于主实例,设置为 true。对于副本实例,设置为 false

    HTTP 方法和网址:

    PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    请求 JSON 正文:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "start-time",
          "enabled": enabled,
          "binaryLogEnabled": true
        }
      }
    }
    

    如需发送您的请求,请展开以下选项之一:

    您应该会收到类似以下内容的 JSON 响应:

  3. 将实例更新为区域实例:

    在使用下面的请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-name:实例名称

    HTTP 方法和网址:

    PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name

    请求 JSON 正文:

    {
      "settings": {"availabilityType": "REGIONAL" }
    }
    

    如需发送您的请求,请展开以下选项之一:

    您应该会收到一个成功的状态代码 (2xx) 和一个空响应。

启动故障转移

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

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

控制台

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

    转到“Cloud SQL 实例”页面

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

gcloud

启动故障转移:

gcloud sql instances failover [PRIMARY_INSTANCE_NAME]

REST v1beta4

  1. 描述相应主实例以获取 settingsVersion 字段的值。

    在使用下面的请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    {
      "kind": "sql#instance",
      "state": "RUNNABLE",
      "databaseVersion": "MYSQL_5_7",
      "settings": {
        "authorizedGaeApplications": [],
        "tier": "db-f1-micro",
        "kind": "sql#settings",
        "pricingPlan": "PER_USE",
        "replicationType": "SYNCHRONOUS",
        "activationPolicy": "ALWAYS",
        "ipConfiguration": {
          "authorizedNetworks": [],
          "ipv4Enabled": true
        },
        "locationPreference": {
          "zone": "asia-east1-a",
          "kind": "sql#locationPreference"
        },
        "dataDiskType": "PD_SSD",
        "backupConfiguration": {
          "startTime": "08:00",
          "kind": "sql#backupConfiguration",
          "enabled": true,
          "binaryLogEnabled": true
        },
        "settingsVersion": "13",
        "storageAutoResizeLimit": "0",
        "storageAutoResize": true,
        "dataDiskSizeGb": "10"
      },
      "etag": "etag-id",
      "ipAddresses": [
        {
          "type": "PRIMARY",
          "ipAddress": "10.0.0.1"
        }
      ],
      "serverCaCert": {
        "kind": "sql#sslCert",
        "certSerialNumber": "0",
        "cert": "certificate-id",
        "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
        "sha1Fingerprint": "sha-id",
        "instance": "instance-id",
        "createTime": "2019-06-28T22:46:35.052Z",
        "expirationTime": "2029-06-25T22:47:35.052Z"
      },
      "instanceType": "CLOUD_SQL_INSTANCE",
      "project": "project-id",
      "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
      "backendType": "SECOND_GEN",
      "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "connectionName": "project-id:region:instance-id",
      "name": "instance-id",
      "region": "asia-east1",
      "gceZone": "asia-east1-a"
    }
    
  2. 启动故障转移:

    在使用下面的请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-name:实例名称
    • settings-version:来自 instanceInfo 的 settingsVersion

    HTTP 方法和网址:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name/failover

    请求 JSON 正文:

    {
      "failoverContext":
         {
            "settingsVersion":"settings-version"
         }
    }
    

    如需发送您的请求,请展开以下选项之一:

    您应该会收到类似以下内容的 JSON 响应:

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

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

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

控制台

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

    转到“Cloud SQL 实例”页面

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

gcloud

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

REST v1beta4

在使用下面的请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_5_7",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "asia-east1-a",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "08:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
      "binaryLogEnabled": true
    },
    "settingsVersion": "13",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "etag-id",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    "kind": "sql#sslCert",
    "certSerialNumber": "0",
    "cert": "certificate-id",
    "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
    "sha1Fingerprint": "sha-id",
    "instance": "instance-id",
    "createTime": "2019-06-28T22:46:35.052Z",
    "expirationTime": "2029-06-25T22:47:35.052Z"
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "asia-east1",
  "gceZone": "asia-east1-a"
}

输出指示 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

REST v1beta4

以下请求使用 instances:patch 方法将实例的可用性类型更改为可用区。

在使用下面的请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-name:实例名称

HTTP 方法和网址:

PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name

请求 JSON 正文:

{
  "settings": {"availabilityType": "ZONAL" }
}

如需发送您的请求,请展开以下选项之一:

您应该会收到一个成功的状态代码 (2xx) 和一个空响应。

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

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

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

问题排查

点击表中的链接可查看详细信息:

针对此问题… 可能的原因… 请尝试以下操作…
找不到手动故障转移的指标。 只有自动故障转移会纳入指标
CPU 和 RAM 使用率接近 100% 实例机器大小对于负载而言过小。 升级实例机器大小

找不到手动故障转移的指标

您执行了手动故障转移,但在自动故障转移指标的 Metrics Explorer 中找不到相应的条目。

可能的问题

只有自动故障转移会纳入指标。手动启动的故障转移不会纳入指标。

可以尝试的操作


CPU 和 RAM 使用率接近 100%

Cloud SQL 实例资源(CPU 和 RAM)使用率接近 100%,导致高可用性实例发生故障。

可能的问题

实例机器大小对于负载而言过小。

可以尝试的操作

对实例进行修改以升级为更大的机器,从而获得更多 CPU 和内存。

后续步骤