Cloud SQL 中的复制

复制功能是指创建 Cloud SQL 实例或本地数据库的副本,并将工作分流到副本。

简介

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

其他原因包括:

  • 在区域之间迁移数据
  • 在平台之间迁移数据
  • 将数据从本地数据库迁移到 Cloud SQL

此外,如果原始实例已损坏,则系统可能会提升副本。

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

在引用本地数据库时,复制场景称为从外部服务器复制。在此场景中,被复制的数据库是源数据库服务器。驻留在 Cloud SQL 中的副本称为 Cloud SQL 副本。在 Cloud SQL 中,还有一个表示源数据库服务器的实例,该实例称为源表示形式实例。

您还可以使用 Database Migration Service 从源数据库服务器持续复制到 Cloud SQL。

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

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

只读副本

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

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

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

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

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

跨区域只读副本

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

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

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

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

逻辑复制

借助 Cloud SQL,您可以使用 PostgreSQL 的逻辑复制功能配置自己的复制解决方案。逻辑复制是一种灵活的解决方案,支持以下各项:

  • 从主实例到副本的标准复制
  • 仅特定表或行的选择性复制
  • PostgreSQL 主要版本之间的复制
  • 到非 PostgreSQL 数据库的复制
  • 变更数据捕获 (CDC) 工作流,其中的所有数据库更改都会流式传输到使用方

如需了解详情,请参阅设置逻辑复制。该页面包含以下信息:

  • 原生逻辑复制
  • pglogical 扩展程序

复制功能的使用场景

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

名称 主实例 副本 优势和用例 更多信息
读取副本 Cloud SQL 实例 Cloud SQL 实例
  • 额外的读取容量
  • 分析目标
跨区域读取副本 Cloud SQL 实例 Cloud SQL 实例
  • 额外的读取容量
  • 分析目标
  • 其他灾难恢复功能
  • 提升读取性能
  • 在区域之间迁移数据
逻辑复制 任何 PostgreSQL 实例 任何 PostgreSQL 实例或外部使用方
  • 从 Cloud SQL 外部的复制
  • 跨 PostgreSQL 版本的复制
  • 使用行和列过滤功能仅复制某些表中的部分数据。另请参阅 pglogical 2.1 和 PostgreSQL 10 中的逻辑复制
  • 到非 PostgreSQL 目标(变更数据捕获)的复制

结算

  • 读取副本按与标准 Cloud SQL 实例相同的费率计费。数据复制可免费使用。
  • 由于副本始终与其主实例保持连接,因此主实例永不会停用。 这种情况可能导致主实例的计费增加。了解详情
  • 除了与任何 Cloud SQL 实例关联的常规费用之外,跨区域副本还会因从主实例发送到副本的复制日志而产生跨区域网络出站流量费用,详情请参阅网络出站流量价格
  • 跨区域只读副本的价格与在同一区域中创建新实例时的价格相同。请参阅 Cloud SQL 实例价格并选择相应的区域。

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

主题 讨论
高可用性 只读副本既不具有高可用性,也不提供此性能。
故障转移 主实例无法故障转移到读取副本,并且读取副本在服务中断期间无法以任何方式进行故障转移。
维护期 读取副本不支持维护期设置,且不与主实例共享维护期。系统可以随时对读取副本进行维护。读取副本与主实例的维护时间不同。
中断性升级 读取副本随时可能出现升级中断。
性能 当您创建读取副本时,该副本不会影响主实例的性能或可用性。
多个只读副本 您最多可以为一个主实例创建 10 个只读副本。
负载平衡 Cloud SQL 不会在各副本之间提供负载平衡。 请使用连接池并在副本之间分配查询。
设置 主实例的设置会传播到副本,包括 postgres 用户的密码及对用户表的更改。
核心和内存 读取副本使用的核心数和内存量与主实例不同。PostgreSQL 只读副本所具有的 CPU 和内存可以高于主实例,但不能具有更少的 spCPU 或更少的内存。
用户表 您不能对副本进行更改。所有用户更改都必须在主实例上完成。
备份 您不能为副本配置备份。
恢复主实例 当副本存在时,您无法恢复副本的主实例。 在通过备份来恢复实例或对实例执行时间点恢复之前,您必须先提升或删除实例的所有副本。
删除主实例 您必须先将主实例的所有读取副本提升为独立实例或删除它们,然后才能删除主实例。
停用预写式日志记录 您必须先提升或删除主实例的所有读取副本,然后才能停用主实例上的预写式日志。
为副本创建副本 您不能为副本创建副本。
停止副本 您不能对副本执行 stop 操作。您可以对它执行 restartdeletedisable replication 操作,但不能像停止主实例那样对其执行停止操作。
专用 IP 如果您要使用专用 IP 地址连接到副本,则无需为副本创建其他 VPC 专用连接,因为它是从主实例继承的。

后续步骤