读取池简介

Cloud SQL 读取池支持为大型读取工作负载实现负载均衡。

什么是读取池?

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

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

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

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

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

通过单个读取端点访问读取池

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

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

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

复制

Cloud SQL 读取池复制是使用 SQL Server 读取扩缩可用性组实现的。

如需了解详情,请参阅复制简介

读取池特征

以下特征适用:

  • 包含两个或更多节点的读取池受服务等级协议 (SLA) 保障。
  • 读取池的读取池节点始终位于同一区域(由用户指定)。 Google Cloud 会使读取池节点交替驻留在相应区域中的所有可用区中。
  • 一个主实例可以具有一个或多个读取池。
  • 以下操作会导致亚秒级别停机时间:
    • 横向扩容或缩容(添加或移除读取池节点)。
    • 纵向扩容或缩容(更改池中节点的机器类型)。
    • 将现有可用区级读取副本转换为读取池。
  • 读取池会在其主实例之前接受维护,这与读取副本类似。与读取副本一样,读取池会在主实例的维护窗口期间接受维护。
  • 每个读取池节点都具有与 Cloud SQL 读取副本相同的可用指标。
  • 使用 gcloud 或 Google Cloud 控制台描述项目的详细信息时,系统会列出读取池名称,但不会列出各个读取池节点名称。

限制

存在以下限制:

  • 读取池仅适用于采用新网络架构Cloud SQL 企业 Plus 版实例。与读取池关联的主实例也必须是 Cloud SQL 企业 Plus 版实例。
  • 每个主实例最多可以创建 7 个只读副本。 此值可以包括读取副本和读取池节点数(在读取池实例下)的任意组合。例如,一个主实例可能有两个读取副本,以及一个包含五个读取副本(读取池节点)的单独读取池。
  • SQL Server 实例不支持读取池自动扩缩。
  • 高级灾难恢复与读取池不兼容。主实例不能同时使用读取池和可级联副本
  • 流量是否由读取池节点进行处理取决于数据库是否健康状况良好,但与该读取池节点的复制延迟时间长短无关。即使有其他没有延迟的读取池节点可用,流量也可以由存在延迟的读取池节点进行处理。如果数据库进程正常运行且可以响应查询,则认为数据库健康状况良好,但对所传送数据的新鲜度没有要求。
  • 系统无法为连接到读取池中的多个读取池节点的单个逻辑会话提供保证。会话中的后续请求连接到的读取池节点的复制位置可能会低于处理先前请求的读取池节点,这可能会导致数据库的状态似乎发生了时光倒流。
  • 不支持以下类型的更新:
    • 虽然读取池仍会接收 Cloud SQL 维护更新,但您无法将读取池或其关联的主实例更新为新的主要数据库版本。
    • 启动或停止读取池的节点。
  • 除了读取副本不支持的操作之外,读取池还不支持以下操作: