Cloud SQL 中的复制功能简介

复制功能是指创建 Cloud SQL 实例的副本并将工作分流到副本。

简介

使用复制功能的主要原因是在不降低性能的情况下扩大数据库中的数据使用量。

复制的其他原因包括在区域之间迁移数据。

此外,如果原始实例已损坏,可以将副本提升为独立实例(在这种情况下,现有副本不会认为该实例是主实例)。

在引用 Cloud SQL 实例时,用于复制的实例称为主实例,而副本则称为读取副本。主实例和只读副本都驻留在 Cloud SQL 中。

创建第一个副本时:

  • 主实例设置为当前主实例上所有数据库的完整恢复模型。
  • 系统会创建一个临时磁盘,获取完整备份并将其存储在临时磁盘上。临时磁盘在副本创建过程完成后会被删除。

如果在第一个副本创建时间段内,用户切换到简单恢复模型,副本创建会失败。

以下内容适用于在创建副本后添加到主实例的数据库:

  • 数据库会自动添加到可用性组,并使用自动种子填充在副本中。
  • 每个副本创建操作都会调用主实例上数据库的完整(完整恢复模型)备份。系统不会复制副本后创建的登录和服务器对象。

Cloud SQL 支持以下类型的副本:

Cloud SQL 不支持两个外部服务器之间的复制。

只读副本

您可以使用读取副本从 Cloud SQL 实例中分流工作。读取副本是主实例的精确副本。主实例上的数据和其他更改几乎在读取副本上实时更新。

只读副本是只读副本;您无法将数据写入其中。只读副本会处理查询、读取请求和分析流量,从而减少主实例的负载。 每个主实例最多可以有 8 个只读副本。

您可以使用副本的连接名称和 IP 地址直接连接到副本。如果您要使用专用 IP 地址连接到副本,则无需为副本创建其他 VPC 专用连接,因为连接是从主实例继承的。

如需了解如何创建只读副本,请参阅创建只读副本。如需了解如何管理只读副本,请参阅管理只读副本

在主实例上使用 HA 时,最好将只读副本放在与主实例不同的可用区中。这种做法可确保只读副本在包含主实例的可用区中断服务时继续运行。如需了解详情,请参阅高可用性概览

选择适当的机器类型

读取副本的机器类型可能与主实例的机器类型不同。您应该监控实例上的指标(例如 CPU 和内存用量),以确保副本实例的大小适合其工作负载,特别是在副本实例小于主实例时。容量不足的副本实例更有可能出现性能不佳的情况,例如频繁的内存不足 (OOM) 事件。

跨区域读取副本

您可以利用跨区域复制功能,在与主实例不同的区域中创建只读副本。创建跨区域只读副本的方式与创建区域内副本的方式相同。

对于 SQL Server 只读副本,假设副本与主副本位于同一虚拟网络中,或者通过公共 IP 进行通信。

使用跨区域副本具有以下优势:

  • 在更接近应用所在区域的位置提供副本,从而提高读取性能。
  • 提供更高的灾难恢复能力,可防范区域性故障。
  • 可让您将数据从一个区域迁移到另一个区域。

如需详细了解跨区域副本,请参阅提升副本以实现区域性迁移或灾难恢复

复制功能的使用场景

以下使用场景适用于每种复制类型。

名称 主实例 副本 优势和用例 更多信息
读取副本 Cloud SQL 实例 Cloud SQL 实例
  • 额外的读取容量
  • 分析目标
  • 提升读取性能
  • 从副本导出
跨区域读取副本 Cloud SQL 实例 Cloud SQL 实例
  • 额外的读取容量
  • 分析目标
  • 其他灾难恢复功能
  • 提升读取性能
  • 在区域之间迁移数据
SQL Server 复制 Cloud SQL 外部的实例 Cloud SQL for SQL Server 实例
  • 迁移至 Cloud SQL 的路径
  • 从外部服务器复制到 Cloud SQL
  • 从 Cloud SQL 复制到外部服务器
  • 在 Cloud SQL 实例之间复制
  • 将数据复制到 Google Cloud Platform
  • 分析目标

结算

  • 读取副本按与标准 Cloud SQL 实例相同的费率计费。系统不会对数据复制操作收费。
  • 跨区域读取副本的价格与在同一区域中创建新 Cloud SQL 实例时的价格相同。请参阅 Cloud SQL 实例价格并选择相应的区域。除了与实例关联的常规费用之外,跨区域副本还会因从主实例发送到副本实例的复制日志而产生跨区域数据传输费用,如网络出站流量价格中所述。

Cloud SQL 读取副本的快速参考信息

主题 讨论
备份 您不能为副本配置备份。
核心和内存 读取副本使用的核心数和内存量可能与主实例不同。
删除主实例 您必须先将主实例的所有读取副本提升为独立实例或删除它们,然后才能删除主实例。
删除副本 删除副本对主实例的状态没有影响。
删除复制的数据库 您可以使用 Google Cloud 控制台或 gcloud 命令删除复制的 SQL Server 数据库,删除操作会自动传播到副本。您无法使用 T-SQL 命令删除复制的 SQL Server 数据库。
故障切换 主实例无法故障切换到读取副本,并且读取副本在服务中断期间无法以任何方式进行故障切换。
高可用性 读取副本不提供高可用性
负载平衡 Cloud SQL 不会在各副本之间提供负载均衡。
维护期 读取副本不支持维护期设置,且不与主实例共享维护期。 系统可以随时对读取副本进行维护。读取副本与主实例的维护时间不同。
多个读取副本 您最多可以为一个主实例创建 8 个只读副本。
专用 IP 如果您要使用专用 IP 地址连接到副本,则无需为副本创建其他 VPC 专用连接,因为它是从主实例继承的。
恢复主实例 当副本存在时,您无法恢复副本的主实例。在通过备份来恢复实例或对实例执行时间点恢复之前,您必须先提升或删除实例的所有副本。
设置 主实例的设置会传播到副本,包括对可以访问该实例的用户的数据所做的更改。
停止副本 您不能对副本执行 stop 操作。您可以对它执行 restartdelete 操作,但不能像停止主实例那样对其执行停止操作。
升级副本 读取副本随时可能出现升级中断。
用户表 您不能对副本进行更改。所有用户更改都必须在主实例上完成。

限制

  • 此功能仅适用于以下版本的 Cloud SQL for SQL Server:

    • SQL Server 2017 Enterprise
    • SQL Server 2019 Enterprise
    • SQL Server 2022 Enterprise
  • 登录不会传播到副本。

  • 您必须使用 T-SQL 和/或 SQL Server Management Studio 监控副本。

  • 在删除数据库之前,您必须关闭数据库连接。

  • 创建副本时,主实例不能包含单用户模式下的数据库。否则,副本创建将失败。

后续步骤