旧版高可用性配置

本页面介绍了实现高可用性的 MySQL 实例的旧版配置。在旧版配置下,当实例进行故障转移时,它会使用 failover replica 实例。新配置不使用故障转移副本。相反,它使用 Google 的区域永久性磁盘,该磁盘会在一个区域的两个地区之间的块级层同步复制数据。

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

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

创建实例时,您可以为该实例配置高可用性;Cloud SQL 会在创建主实例的同时创建故障转移副本。Cloud Console 不支持旧版功能,请改用 gcloud 或 cURL 命令。

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

gcloud

  1. 创建主实例及其故障转移副本:
    gcloud sql instances create [PRIMARY_INSTANCE_NAME] \
                         --backup-start-time [BACKUP_WINDOW_START_TIME] \
                         --failover-replica-name [FAILOVER_REPLICA_NAME] \
                         --tier [MACHINE_TYPE] --enable-bin-log
    

    备份时段的开始时间采用 HH:MM 格式。

    如需查看可用参数的完整列表,请参阅 gcloud sql instances create 参考页面。

  2. 在主实例上配置根用户:
    gcloud sql users set-password root --host=% \
                          --instance [PRIMARY_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":"[PRIMARY_INSTANCE_NAME]", "region":"[REGION]",
                  "settings": {
                               "tier":"[MACHINE_TYPE]",
                               "backupConfiguration": {"binaryLogEnabled": true, "enabled": true}},
                               "failoverReplica": {"name": "[FAILOVER_REPLICA_NAME]"}}' \
         -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'
    
    这项更改将自动传播到相应副本。

旧版配置:为现有实例配置高可用性

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

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

gcloud

  1. 检查主实例的状态:
    gcloud sql instances describe [PRIMARY_INSTANCE_NAME]
    

    如果 databaseReplicationEnabled 属性为 true,则说明该实例为副本;您不能为副本创建故障转移副本。

  2. 如果 backupConfiguration 下的 enabled 属性为 false,请立即为主实例启用备份:
    gcloud sql instances patch [PRIMARY_INSTANCE_NAME] --backup-start-time [HH:MM]
    

    backup-start-time 参数采用 UTC±00 时区的 24 小时制,用于指定一个 4 小时的备份时段开始时间,备份可在该时段内随时启动。

  3. 如果 binaryLogEnabled 属性为 false,请启用二进制日志:
    gcloud sql instances patch --enable-bin-log [PRIMARY_INSTANCE_NAME]
    

    启用二进制日志会导致实例重启。

  4. 创建副本:
    gcloud sql instances create [FAILOVER_REPLICA_NAME] \
                         --master-instance-name=[PRIMARY_INSTANCE_NAME] \
                         --replica-type=FAILOVER
    

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/[PRIMARY_INSTANCE_NAME]?fields=settings
    

    输出将包含 backupConfiguration,例如:

    "backupConfiguration": {
        "kind": "sql#backupConfiguration",
        "startTime": "12:00",
        "enabled": true,
        "binaryLogEnabled": true
    }
    
  2. 如果 enabledbinaryLogEnabledfalse,请使用实例资源的 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 \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[PRIMARY_INSTANCE_NAME]
    
  3. 使用实例资源的 insert 方法来创建故障转移副本。

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "[REPLICA_NAME]", "masterInstanceName": "[PRIMARY_INSTANCE_NAME]",
                  "region": "[PRIMARY_IMSTANCE_REGION]", "databaseVersion": "[PRIMARY_DATABASE_VERSION]",
                  "replicaConfiguration": {"failoverTarget": true},
                  "settings": {"tier":"[MACHINE_TYPE]"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    

    MACHINE_TYPE 必须是对第二代实例有效的机器类型,并且必须至少与主实例的机器类型一样大。

启动故障转移

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

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

控制台

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

    转到“Cloud SQL 实例”页面

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

gcloud

启动故障转移:

gcloud sql instances failover [PRIMARY_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/[PRIMARY_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/[PRIMARY_INSTANCE_NAME]/failover
    

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

旧版配置:创建复制延迟提醒

故障转移操作所需的时间取决于故障转移启动时复制延迟的时长。借助 Google Cloud Console 中的 Google Cloud 运维套件 Monitoring,您可以在复制延迟超过阈值时收到提醒。

如需详细了解复制延迟,请在 MySQL 文档中的 SHOW SLAVE STATUS 语法页面上搜索“seconds_behind_master”。

如需详细了解 Google Cloud 的运维套件 Monitoring,请参阅 Google Cloud 的运维套件 Monitoring 文档

旧版配置:为特定故障转移副本设置提醒

  1. 点击左上角的 Google Cloud 的运维套件徽标以返回到 Google Cloud 的运维套件 Monitoring 主页。
  2. 点击创建提醒政策
  3. 为提醒输入一个描述性名称。
  4. 选择 Metric Threshold,然后点击 Next 以打开“Target”标签。
  5. Resource Type 中,选择 Cloud SQL
  6. Applies To 中选择 Single,然后选择您的故障转移副本。
  7. 点击 Next 以打开“Configuration”标签。
  8. 输入以下值:

    字段
    If Metric 落后于主实例的秒数
    Condition above
    Thresholds 120(或任何适合您环境的值)
    For 3 minutes

  9. 选择所需的 Notification 方法,然后点击 Save Condition

旧版配置:为故障转移副本组设置提醒

如果您打算在同一项目中创建多个故障转移副本,那么为整个组设置提醒更为方便,而无需分别为每个故障转移副本设置提醒。如需创建一个受监控的组,请在故障转移副本的名称中添加一个后缀(如“-failover”)。切勿对任何其他类型的 Cloud SQL 实例使用此后缀。

创建故障转移副本组:

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

    转到“Cloud SQL 实例”页面

  2. 在左侧菜单中,选择 Monitoring 以打开 Google Cloud 的运维套件 Monitoring 页面,然后登录。
  3. 在上方菜单栏中,选择 > 创建...
  4. 为您的组输入一个描述性名称。
  5. 保留 NameContains 的选中状态,并输入您的名称子字符串。
  6. 点击 Save Group。此时会打开新组对应的摘要页面。
  7. 确认预期的实例包含在此组中。

为故障转移副本组创建提醒

  1. 点击左上角的 Google Cloud 的运维套件徽标以返回到 Google Cloud 的运维套件 Monitoring 主页。
  2. 点击创建提醒政策
  3. 为您的组提醒输入一个描述性名称。
  4. 选择 Metric Threshold,然后点击 Next 以打开“Target”标签。
  5. Resource Type 中,选择 Cloud SQL
  6. Applies To 中选择 Group,然后选择您的故障转移组。
  7. 保留 Any Member Violates 的选中状态,然后点击 Next 以打开“Configuration”标签。
  8. 输入以下值:

    字段
    If Metric 落后于主实例的秒数
    Condition above
    Thresholds 120(或任何适合您环境的值)
    For 3 minutes

  9. 选择所需的 Notification 方法,然后点击 Save Condition

旧版配置:对实例停用高可用性

您需要删除故障转移副本实例才能对主实例移除高可用性。

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

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

控制台

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

    转到“Cloud SQL 实例”页面

  2. 选择与要对其停用高可用性的实例关联的故障转移实例。
  3. 实例详情页面上,点击删除
  4. 删除副本 (Delete Replica) 窗口中,重新输入故障转移实例的名称。
  5. 点击删除。原始实例的配置将会更改为地区。

gcloud

如需了解参考信息,请参阅 gcloud sql instances delete
gcloud sql instances delete [FAILOVER_REPLICA_NAME]

cURL

以下请求使用 instances:delete 方法删除实例。
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json'\
      -X DELETE\
https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]

后续步骤