配置 Cloud SQL 和外部服务器以进行复制

本页面介绍了如何配置用于复制到 Cloud SQL 的外部服务器,在 Cloud SQL 上创建源表示形式实例,以及将数据复制到 Cloud SQL。您需要先完成本页面上的所有步骤,然后才能继续执行复制步骤。

本页面中介绍的步骤的替代方案是数据库迁移服务,该服务提供从外部服务器到 Cloud SQL 的持续复制或一次性数据库迁移。

准备工作

术语

  • 外部服务器。您要从中复制数据的 Cloud SQL 外部的 MySQL 服务器。它也称为源数据库或外部数据库服务器。它可以是另一个 Cloud SQL 实例或任何其他数据库服务器,例如本地、Amazon Relational Database Service (RDS) 等。

  • 源表示形式实例Cloud SQL 实例的模拟,表示要连接到 Cloud SQL 副本的外部服务器。该实例会显示在 Google Cloud 控制台中,看起来像常规 Cloud SQL 实例,但不包含数据,不需要配置或维护,也不会影响结算。

  • Cloud SQL 副本。从外部服务器复制的 Cloud SQL 实例。也称为外部主服务器读取副本。

  • 复制用户账号。外部服务器上的 MySQL 用户账号,它具有足够的权限,可以在外部服务器和 Cloud SQL 副本之间进行复制。

  • 托管式导入。将数据从外部服务器直接导入 Cloud SQL 副本的过程。在这种情况下,Cloud SQL 使用复制用户账号连接到外部服务器,并直接在外部服务器上运行数据转储以将数据导入到 Cloud SQL 副本中。

设置 Google Cloud 项目

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud SQL Admin API.

    Enable the API

  8. 确保您的用户账号具有 Cloud SQL Admin、Storage Admin、Compute Viewer 角色。

    转到 IAM 页面

安装 Google Cloud SDK

如需配置复制,请为您的外部服务器安装 Google Cloud SDK。除非已在其他位置安装 SDK,否则您可能需要在外部服务器上安装该 SDK。

设置外部服务器以进行复制

外部服务器核对清单

  • 确保您的外部服务器上安装了 MySQL 5.5、5.6、5.7、8.0 或 8.4。支持 MySQL Community Edition、Cloud SQL for MySQL、Amazon Aurora 和 MySQL on Amazon RDS。

    • 您必须在 Cloud SQL 副本上使用 MySQL 的主要版本,该版本必须与外部服务器上运行的 MySQL 版本相同或更高。
    • 如果外部服务器上安装了 MySQL 5.5,则 GTID 不受支持。
  • 确保启用二进制日志,并且确保:

  • 记下外部服务器是否已启用 GTID。这会影响设置复制所需执行的步骤。

  • 记下外部服务器是否具有全局读取锁定权限。这会影响设置复制所需执行的步骤。

  • 如果因为传出专用 IP 地址不是静态的而使用专用 IP 地址启用了 Cloud SQL 副本,请配置外部服务器的防火墙以允许为 VPC 网络(Cloud SQL 副本将其用作专用网络)的专用服务访问通道分配的内部 IP 范围。

    必须配置源数据库服务器的防火墙以允许为 VPC 网络(Cloud SQL 目标实例将其用作 ipConfiguration 设置privateNetwork 字段)的专用服务连接分配的整个内部 IP 地址范围

    如需查找内部 IP 范围,请执行以下操作:

    1. 在 Google Cloud 控制台中,转到 VPC 网络页面。

      转到“VPC 网络”页面

    2. 选择要使用的 VPC 网络。

    3. 点击专用服务连接标签页。

  • 如果外部服务器包含 DEFINER 子句(视图、事件、触发器或存储过程),则复制可能会失败,具体取决于这些语句的执行时间。详细了解 Cloud SQL 中的 DEFINER 用法以及可能的解决方法。

  • InnoDB 是 Cloud SQL 中唯一支持的存储引擎。使用 MyISAM 进行迁移可能会导致数据不一致且需要验证数据。如需了解详情,请参阅 MySQL 文档中的将表从 MyISAM 转换到 InnoDB

配置二进制日志保留

您应该将外部服务器配置为保留二进制日志至少 24 小时。

MySQL Community

如果您的外部服务器使用的是 MySQL Community Edition,则您可以使用以下 MySQL 命令更新二进制日志保留设置。

Cloud SQL for MySQL

如果您的外部服务器默认使用 Cloud SQL for MySQL,则二进制日志会保留七天。您可以更改此设置

Amazon RDS 和 Aurora

如果外部服务器是 Amazon RDS 实例,则您可以使用以下命令更新二进制日志保留设置:

call mysql.rds_set_configuration('binlog retention ', HOURS);
属性 说明
HOURS Amazon RDS 实例要保留的二进制日志的总小时数。

如需了解详情,请参阅 mysql.rds_set_configuration

创建复制用户账号

您的外部服务器上必须存在专用于管理 Cloud SQL 副本复制的 MySQL 用户账号。此用户账号只能用于管理复制。根据您使用的迁移方法,您可能需要在以后向用户授予权限。

如需添加复制用户账号,请在外部服务器上打开终端并输入以下 MySQL 命令:

MySQL

      CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD';
      GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST';
      FLUSH PRIVILEGES;

示例

CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
FLUSH PRIVILEGES;
属性 说明
USERNAME 外部服务器上的复制用户账号。
PASSWORD 复制用户账号的密码。
HOST 将此属性设置为 % 可接受来自任何主机的所有连接。在稍后的步骤中,此属性更改为仅接受来自 Cloud SQL 副本的连接。

设置源表示形式实例

源表示形式实例会引用外部服务器。它仅包含来自外部服务器的请求数据。创建请求数据并在 curl 命令中使用这些数据,该命令会在 Cloud SQL 中创建源表示形式实例。

创建请求数据

请求数据包含 JSON 格式的外部服务器基本信息。您可以为公共或专用网络上的 Cloud SQL 副本配置请求数据,其中应包含以下信息:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "hostPort": "SOURCE_HOST",
        "username": "USERNAME",
        "password": "PASSWORD",
        "caCertificate": "SOURCE_CERT",
        "clientCertificate": "CLIENT_CERT",
        "clientKey": "CLIENT_KEY"
      }
    }

代管式导入示例

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}

转储文件示例

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:"3306",
    "username": "replicationUser",
    "password": "486#@%*@",
    "dumpFilePath": "gs://replica-bucket/source-database.sql.gz",
    "caCertificate": "content of your certificate",
    "clientCertificate": "content of your certificate",
    "clientKey": "content of your client key"
  }
}

自定义导入示例

// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}
属性 说明
SOURCE_NAME 要创建的源表示形式实例的名称。
REGION 源表示形式实例所在的区域
DATABASE_VERSION 外部服务器上运行的数据库版本。选项包括 MYSQL_5_6MYSQL_5_7MYSQL_8_0MYSQL_8_4
SOURCE HOST 外部服务器的 IPv4 地址和端口,或外部服务器的 DNS 地址。 如果您使用 DNS 地址,则其最多可以包含 60 个字符。如果外部服务器托管在 Cloud SQL 上,则端口为 3306
USERNAME 外部服务器上的复制用户账号。
PASSWORD 复制用户账号的密码。
BUCKET 包含转储文件的存储桶的名称。 仅当您使用 Cloud Storage 存储桶中存在的转储文件设置复制时,才应包含此字段。
DUMP_FILE 存储桶中包含外部服务器数据的文件。
CLIENT_CA_CERT 外部服务器上的 CA 证书。 仅当外部服务器上使用 SSL/TLS 时,才应包含此字段。
CLIENT_CERT 外部服务器上的客户端证书。仅对服务器-客户端身份验证是必需的。 仅当外部服务器上使用 SSL/TLS 时,才应包含此字段。
CLIENT_KEY 外部服务器上的客户端证书的私钥文件。仅对服务器-客户端身份验证是必需的。 仅当外部服务器上使用 SSL/TLS 时,才应包含此字段。

创建源表示形式实例

在开始此步骤之前,请创建包含源请求数据的 JSON 文件

然后,如需在 Cloud SQL 中创建源表示形式实例,请打开终端并运行以下命令:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

示例

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X POST \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
属性 说明
PROJECT_ID Google Cloud 中的项目 ID。
JSON_PATH 包含外部服务器请求数据的 JSON 文件的路径。

更新源表示形式实例

如果您从外部服务器更新请求数据,则可以更新现有源表示形式实例以使用修改后的值。

修改请求数据

更新请求数据,以包含已更改的所有字段。其中包括 hostPortusernamepasswordcaCertificateclientCertificateclientKey 字段。更新请求数据后,在 curl 命令中使用这些数据更新 Cloud SQL 中的实例。

以下示例展示了如何使用不同用户名和密码更新 usernamepassword 字段:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "username": "NEW_USERNAME",
        "password": "NEW_PASSWORD"
      }
    }

代管式导入示例

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "525#@%*@"
  }
}

转储文件示例

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}

自定义导入示例

// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}
属性 说明
SOURCE_NAME 源表示形式实例的名称。
REGION 源表示形式实例所在的区域
DATABASE_VERSION 外部服务器上运行的数据库版本。选项包括 MYSQL_5_6MYSQL_5_7MYSQL_8_0MYSQL_8_4
NEW_USERNAME 外部服务器上的新复制用户账号。
NEW_PASSWORD 新账号的密码。

修改源表示形式实例

在开始执行此步骤之前,请创建一个包含修改后的请求数据的 JSON 文件

然后,如需在 Cloud SQL 中修改源表示形式实例,请打开终端并运行以下命令:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X PATCH \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_NAME

示例

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X PATCH \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
属性 说明
PROJECT_ID Google Cloud 中的项目 ID。
JSON_PATH 包含外部服务器请求数据的 JSON 文件的路径。
SOURCE_NAME 源表示形式实例的名称。

设置 Cloud SQL 副本

Cloud SQL 副本最终包含来自外部服务器的数据。在此步骤中,您将创建请求数据并在 curl 命令中使用该请求,以在 Cloud SQL 中创建 Cloud SQL 副本。

创建请求数据

请求数据包含 JSON 格式的外部服务器和 Cloud SQL 副本的基本信息。您可以为公共或专用网络上的 Cloud SQL 副本配置请求数据,其中应包含以下信息:

replica.json

    {
        "settings": {
            "tier": "TIER",
            "dataDiskSizeGb": "DISK_SIZE",
            "ipConfiguration": {
                "ipv4Enabled": "PUBLIC_IP_STATUS",
                "privateNetwork": "projects/PROJECT_ID/global/networks/NETWORK_NAME"
             },
             "availabilityType": "AVAILABILITY_TYPE"
        },
        "masterInstanceName": "SOURCE_REPRESENTATION_INSTANCE_NAME",
        "region": "SOURCE_REGION",
        "databaseVersion": "DATABASE_VERSION",
        "name": "REPLICA_NAME"
    }

示例

    {
        "settings": {
            "tier": "db-custom-4-15360",
            "dataDiskSizeGb": "100"
        },
        "masterInstanceName": "source-instance",
        "region": "us-central1",
        "databaseVersion": "MYSQL_5_7",
        "name": "replica-instance"
    }
属性 说明
TIER 用于托管副本实例的机器类型。如果您不知道要使用哪种机器类型,请先使用 db-custom-2-7680。您以后可以根据需要更改其大小和其他受支持的值
DISK_SIZE Cloud SQL 副本的存储空间大小(以 GB 为单位)。
PUBLIC_IP_STATUS 确定实例是否分配有公共 IP 地址。默认情况下,此属性的值为 true。如需停用为副本分配公共 IP 地址的功能,请将值设置为 false。如果您的项目已启用 constraints/sql.restrictPublicIp 组织政策,则如需创建 Cloud SQL 副本,您必须将 ipv4Enabled 属性的值设置为 false。如需详细了解如何关闭公共 IP 地址分配功能,请参阅停用公共 IP
PROJECT_ID 如果 Cloud SQL 副本位于专用网络上,请在 replica.json 文件中添加 privateNetwork 属性。对于 PROJECT_ID,请指定您的项目在 Google Cloud 中的 ID。
NETWORK_NAME 要与 Cloud SQL 副本搭配使用的专用网络的名称。
AVAILABILITY_TYPE Cloud SQL 副本的可用性类型。默认情况下,值为 ZONAL。如需使副本具有高可用性,请将值设置为 REGIONAL。如需了解允许的值,请参阅 SqlAvailabilityType
创建外部服务器高可用性副本后,您无法将其更改为非高可用性副本。反之亦然。您不能将外部服务器非高可用性副本更改为高可用性副本。
如果实例仍在加载初始数据,则尝试手动故障转移可能会导致不可恢复的迁移;如果实例已经在从实例进行复制,则会导致临时停机。检查复制状态
SOURCE_REPRESENTATION_INSTANCE_NAME 源表示形式实例的名称。
SOURCE_REGION 分配给源表示形式实例的区域。
DATABASE_VERSION 要与 Cloud SQL 副本搭配使用的数据库版本。此版本的选项包括 MYSQL_5_6MYSQL_5_7MYSQL_8_0MYSQL_8_4。 与外部服务器上运行的数据库版本匹配,或将值设置为最多高一个版本。
REPLICA_NAME 要创建的 Cloud SQL 副本的名称。

创建 Cloud SQL 副本

在开始执行此步骤之前,请创建包含副本请求数据的 JSON 文件。然后,要创建 Cloud SQL 副本,请打开 Cloud Shell 终端并运行以下命令:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

示例

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @./replica.json \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
属性 说明
PROJECT_ID Google Cloud 中的项目 ID,必须与来源实例的 ID 相同。
JSON_PATH 包含 Cloud SQL 副本请求数据的 JSON 文件的路径。

验证设置

如需确保实例设置正确,请转到“Cloud SQL 实例”页面

您应该在如下所示的列表中看到源表示形式实例和 Cloud SQL 副本:

实例 ID 类型 公共 IP
(-) source-representation-instance 数据库外部主实例 10.68.48.3:3306
replica-instance 数据库读取副本实例 34.66.48.59

此外,请确保您拥有 Cloud SQL 副本的 cloudsql.instances.migrate 权限。此权限包含在 cloudsql.admincloudsql.editor IAM 角色中。

将用户添加到 Cloud SQL 副本

您无法从外部服务器导入数据库用户账号,但可以在 Cloud SQL 副本上创建这些账号。 请在从外部服务器复制之前执行此操作。

获取 Cloud SQL 副本的传出 IP 地址

您可以使用 Cloud SQL 副本的传出 IP 地址在外部服务器和 Cloud SQL 副本之间创建安全连接。系统不会向您收取此 IP 地址的费用。

控制台

如需获取副本的传出 IP 地址,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 在 Cloud SQL 副本的公共 IP 地址旁边,将指针悬停在更多信息提示上,并检索传出 IP 地址。

    请注意,传出 IP 地址不是主列表中显示的 Google Cloud 控制台中副本的 IP 地址。

gcloud

如需获取副本的传出 IP 地址,请运行以下命令:

gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
属性 说明
REPLICA_NAME 您要检索传出公共 IP 地址的 Cloud SQL 副本的名称。

允许在外部服务器上传入的连接

Cloud SQL 副本需要连接到外部服务器才能使复制成功。在以下情况下,您必须为外部服务器配置网络防火墙,以接受来自 Cloud SQL 副本的传出 IP 地址的连接:

  • 外部服务器受防火墙保护或受到其他某个网络限制的约束。
  • 您的 Cloud SQL 副本使用的是公共 IP 地址。

如需连接到 Cloud SQL 副本,请使用该副本的主要 IP 地址。此 IP 地址会显示在 Google Cloud 控制台中。

更新源表示形式实例以允许复制到 Cloud SQL 副本

为 Cloud SQL 副本设置源表示形式实例后,您可能需要更新源表示形式实例。例如,以下场景需要更新您的配置:

  • 外部服务器的主机、端口或 IP 地址发生变化。
  • 您想使用其他 MySQL 复制用户。
  • MySQL 复制用户的密码发生变化。
  • 用于安全连接到外部服务器的 SSL 证书发生变化。

播种 Cloud SQL 副本

您可以通过以下三种方式执行从外部服务器初始加载到 Cloud SQL 副本的数据:

  • 代管式导入使用从外部服务器中提取数据并将其直接导入 Cloud SQL 实例的服务。Cloud SQL 推荐使用此选项。如果外部服务器不使用全局事务标识符 (GTID) 复制,则必须使用此选项。如需了解详情,请参阅使用代管式导入设置从外部数据库复制
  • 转储文件要求您创建外部服务器的转储文件,将其移动到 Cloud Storage 存储分区,并将其导入 Cloud SQL。只有在外部服务器使用 GTID 复制时,才能使用此选项。 如需了解详情,请参阅使用转储文件设置从外部数据库复制
  • 自定义导入要求您创建 Cloud SQL 主实例,使用首选工具执行自定义数据导入,将其降级为 Cloud SQL 副本,然后设置外部服务器复制。这非常适合多 TB 数据库迁移:但是,您必须使用 GTID 复制。如需了解详情,请参阅使用自定义导入设置从大型外部数据库复制

哪种方法适合您?

Cloud SQL 用户流图表

监控复制

Cloud SQL 副本完成初始数据加载后,会连接到外部服务器,并应用导出操作后执行的所有更新。确认您的复制状态

请务必在将副本提升为独立实例之前检查复制状态。如果复制过程未成功完成,则提升的副本将不具有外部服务器的所有更改。

如果复制延迟时间不接近于 0,请按照相关步骤解决该问题。 您可能希望检查这些指标:/postgresql/external_sync/initial_sync_completepostgresql/external_sync/max_replica_byte_lagdatabase/replication/state。查看 Cloud SQL 指标列表。

一旦 Cloud SQL 副本与外部服务器同步,且 Cloud SQL 副本没有复制延迟,就请连接到您的数据库。运行相应的数据库命令,以确保内容与外部服务器相比符合预期。保留您的外部服务器,直到完成必要的验证。

设置级联副本

迁移后,您可以先在 Cloud SQL 副本下创建级联读取副本,然后再升级 Cloud SQL 副本。

只有在使用 GTID 复制时,才能为 Cloud SQL 实例创建级联副本。

如需创建级联副本,请运行以下命令:

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 对于 MySQL 5.7 或更高版本,启用复制功能
  3. 点击将充当您要创建的副本的父级副本相应的副本标签页。
  4. 点击创建副本
  5. 创建读取副本页面上,更新实例 ID 和任何其他配置选项,包括名称、区域和可用区。
  6. 点击创建

    Cloud SQL 会创建一个副本。随后,您将返回到父级副本的实例页面。

  7. 对于要创建的每个新级联副本,请按照步骤 4-6 执行操作。

gcloud

  1. 如果您使用的是 MySQL 5.7 版或更高版本,请为新副本的主实例启用 binlog:
    gcloud sql instances patch --enable-bin-log
          --project=cascade-replica PARENT_REPLICA_NAME
    PARENT_REPLICA_NAME 替换为父级副本的名称。
  2. 使用 --master-instance-name 标志将 Cloud SQL 副本指定为主实例,以创建新副本:
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    替换以下内容:
    • REPLICA_NAME:您要创建的副本的唯一 ID
    • PARENT_REPLICA_NAME:Cloud SQL 副本的名称
  4. 创建副本后,您可以看到对主实例所做的更改已通过级联副本链中的所有副本进行复制。

curl

  1. 如果您使用的是 MySQL 5.7 版或更高版本,请启用二进制日志记录功能:

    如需启用二进制日志记录功能,请将以下 JSON 保存在名为 request.JSON 的文件中,然后调用 curl 命令来启用二进制日志记录功能。
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }

  2. 如需在父级副本下创建副本,请修改以下 JSON 代码示例并将其保存到名为 request.json 的文件中:

    {
      "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. 运行以下命令:
    curl -X POST
    -H "Authorization: Bearer "$(gcloud auth print-access-token)
    -H "Content-Type: application/json; charset=utf-8"
    -d @request.json
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"

提升副本数据库

按照以下步骤提升副本:

  1. 将副本提升为主实例。请注意,GTID 和二进制日志已开启,并且计划备份在提升的副本上已启用。
  2. 向实例添加读取副本
  3. 可选操作:配置实例以实现高可用性 (HA)。 为防止更久的停机时间,您可以通过将 AVAILABILITY_TYPE 设置为 REGIONAL设置副本,从而启用高可用性。

后续步骤