读取池简介

Cloud SQL 读取池支持为大规模读取工作负载进行负载均衡。

什么是读取池?

读取池是一组读取副本实例,用于分发大型读取工作负载。这些工作负载可以从主实例重定向到读取池,以减少主实例上的负载。

读取池中的每个读取副本都称为“读取池节点”

您可以通过多种方式扩缩读取池:

  • 缩减或扩容:通过修改读取池中的读取池节点数量,横向扩缩负载均衡容量。 每个读取池支持 1 到 20 个读取池节点。
  • 扩容或缩容:通过修改与读取池节点关联的机器类型,纵向扩缩负载均衡容量。配置定义后,系统会在读取池中的每个读取池节点中统一应用该配置。

当您修改读取池节点设置(例如存储空间、连接性或数据库配置标志)时,所做更改会自动统一应用于读取池中的每个读取池节点。

您可以通过具有不可变 IP 地址的单个读取端点访问读取池。通过端点建立的连接会自动重定向到某个读取池节点。当您希望读取池进行缩减或扩容时,之前连接到此单个读取端点的应用无需重新配置,即使您可以在读取池中创建新的读取池节点或删除之前的节点也是如此。

每个读取池节点也有自己的 IP 地址。虽然不建议将其用作访问数据的高效方法,但您可以使用这些 IP 地址来排查各个读取池节点的性能问题。

如需详细了解如何检索读取池或读取池节点的连接信息(IP 地址或连接字符串),请参阅查看读取池信息

具有以下特征:

  • 读取池的读取池节点始终位于用户指定的同一区域。 Google Cloud 会在该区域的所有可用区之间轮替读取池节点的驻留位置。
  • 主实例可以有一个或多个读取池。
  • 以下操作会导致停机时间在亚秒级别:
    • 扩容或缩容(添加或移除读取池节点)。
    • 扩容或缩容(更改池中节点的机器类型)。
    • 将现有的可用区读取副本转换为读取池。
  • 读取池会在其主实例之前接受维护,与只读副本类似。与只读副本一样,读取池会在主实例的维护窗口期间接受维护。
  • 每个读取池节点都提供与 Cloud SQL 读取副本相同的指标。
  • 使用 gcloud 或 Google Cloud 控制台描述项目详情时,系统会列出读取池名称,但不会列出各个读取池节点名称。

限制

存在以下限制:

  • 读取池仅适用于采用新网络架构Cloud SQL 企业 Plus 版实例。与读取池关联的主实例也必须是 Cloud SQL 企业 Plus 版实例。
  • 系统会根据数据库的运行状况从读取池节点提供流量,而不考虑该读取池节点的复制延迟时间。即使有其他没有延迟的读取池节点可用,系统也可能会从存在延迟的读取池节点提供流量。如果数据库进程处于启动状态且可以回答查询,则数据库被视为处于健康状态,但系统对所提供数据的新鲜度没有要求。
  • 我们不保证单个逻辑会话会连接到读取池中的多个读取池节点。会话中的后续请求可能会连接到与处理先前请求的读取池节点相比具有较低复制位置 (LSN) 的读取池节点,这可能会导致数据库状态看起来像是回到了过去。
  • 不支持以下类型的更新:
    • 虽然读取池仍会收到 Cloud SQL 维护更新,但您无法将读取池更新到新的大版本数据库。
    • 启动或停止读取池的节点
  • 除了读取副本不支持的操作之外,读取池也不支持以下操作:
    • 提升副本
    • 重启
    • import
    • export
    • 故障切换
    • 重新加密
    • clone
  • 以下功能无法与读取池搭配使用:
    • Private Service Connect
    • 使用共享 CA 或客户管理的 CA 的 SSL/TLS 证书
  • 读取池无法复制到其他实例,例如级联副本或其他读取池。
  • 读取池必须直接从主实例复制。它不能是级联副本。
  • 如果您想将区域级读取副本转换为读取池,则必须先将区域级读取副本转换为可用区级读取副本。
  • 创建或扩缩读取池时,您必须等待与读取池关联的先前创建池、缩减或扩容操作完成。此限制适用于与同一主实例关联的任何其他读取池。如果您要扩缩与同一主实例关联的多个读取池,则必须等待与第一个读取池关联的扩缩操作完成,然后才能开始扩缩下一个读取池。如果您发出并发请求,则可能会收到以下错误:Operation failed because another operation was already in progress.
  • 只有位于与主实例相同区域的区域副本才能转换为在读取池中使用。
  • 您无法在更改读取池节点的机器类型时,从读取池中添加或移除读取池节点。
  • 如果您的应用必须连接到专用读取副本(例如,由于特定读取副本上存在次级索引),请创建 Cloud SQL 读取副本并改用它。
  • 您无法查询与读取池关联的特定用户和数据库。由于 Cloud SQL Studio 依赖于用户和数据库提供的数据,因此不支持与读取池搭配使用。

后续步骤