创建读取副本

本页介绍如何创建 Cloud SQL 实例的读取副本。

读取副本是一个几乎实时地反映主实例更改的主实例副本。您可创建副本,以便从主实例中分流出读取请求或分析流量。 您可以为一个主实例创建多个读取副本。

读取副本为只读状态。您无法对此类副本执行写入操作。

要详细了解复制的工作原理,请参阅复制配置方面的相关要求和提示

准备工作

如果要为此实例创建第一个副本,请确保该实例满足主实例的要求。 了解详情

创建读取副本

创建读取副本的步骤如下。

MySQL 主实例的读取副本

要为 MySQL 主实例创建读取副本,请执行以下操作:

控制台

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

    转到“Cloud SQL 实例”页面

  2. 找到要创建副本的实例,并打开列表最右侧的 more actions 菜单。
  3. 选择创建读取副本

    如果未看到此选项,则表示此实例是副本;您无法为副本创建副本。

  4. 如果实例已启用备份和二进制日志记录功能,请转到第 6 步。否则,请选择自动备份启用二进制日志记录功能,点击继续,然后点击保存并重启以重启实例。

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

  5. 创建读取副本页面中,根据需要更新实例 ID 和任何其他必需的配置选项,包括名称、区域和地区。
  6. 点击创建

    Cloud SQL 会根据需要创建备份并创建副本。 随后,您将返回到主实例的实例页面。

gcloud

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

    如果 databaseReplicationEnabled 属性为 true,则表示此实例是副本;您无法为副本创建副本。

  2. 如果 backupConfiguration 下的 enabled 属性为 false,请立即为主实例启用备份:
    gcloud sql instances patch [MASTER_INSTANCE_NAME] --backup-start-time [HH:MM]
    backup-start-time 参数采用 UTC±00 时区的 24 小时制,用于指定一个 4 小时的备份时段开始时间,备份可在该时段内随时启动。
  3. 如果 binaryLogEnabled 属性为 false,请启用二进制日志:
    gcloud sql instances patch --enable-bin-log [MASTER_INSTANCE_NAME]
    启用二进制日志需要重启实例。
  4. 创建副本:
    gcloud sql instances create [REPLICA_NAME] --master-instance-name=[MASTER_INSTANCE_NAME]
    

    必要时,您可使用 --tier 参数指定一个不同的层级大小。

    您可使用 --region 参数指定不同区域。

REST

  1. 获取当前备份配置

    使用实例资源的 get 方法返回主实例的数据库版本和当前备份配置。

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

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

    HTTP 方法和网址:

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

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

    您应会收到如下所示的 JSON 响应:

  2. 验证是否已设置复制字段

    如果 enabledpointInTimeEnabledfalse,请使用实例资源的 patch 方法同时启用这两项。在请求中,指定您想要更改的备份配置的所有属性。

    要启用备份,请将 enabled 设置为 true,并将 startTime 设置为 HH:MM 格式的时间。startTime 参数采用 UTC±00 时区的 24 小时制,用于指定一个 4 小时的备份时段开始时间,备份可在该时段内随时启动。

    要启用时间点恢复,请将 pointInTimeEnabled 设置为 true

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

    • project-id:项目 ID
    • instance-id:实例 ID
    • start-time:采用“HH:MM”格式表示的时间

    HTTP 方法和网址:

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

    请求 JSON 正文:

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

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

    您应会收到如下所示的 JSON 响应:

  3. 创建读取副本

    使用实例资源的 insert 方法创建读取副本。databaseVersion 属性必须与主实例相同。对于跨区域读取副本,请指定一个主实例所在区域以外的区域。

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

    • project-id:项目 ID
    • primary-instance-name:主实例的名称
    • primary-instance-region:主实例的区域
    • replica-region:副本实例的区域
    • replica-name:副本实例的名称
    • machine-type:机器(层级)类型的枚举字符串。例如“db-n1-standard-4”

    HTTP 方法和网址:

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

    请求 JSON 正文:

    {
      "masterInstanceName": "primary-instance-name",
      "project": "project-id",
      "name": "replica-name",
      "region": "replica-region",
      "settings":
      {
        "tier": "machine-type",
        "settingsVersion": 0,
      }
    }
    

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

    您应会收到如下所示的 JSON 响应:

后续步骤