读取池简介

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 维护更新,但您无法将读取池或其关联的主实例更新为新的主要数据库版本。
    • 启动或停止读取池的节点。
  • 除了读取副本不支持的操作之外,读取池还不支持以下操作:
  • 使用共享 CA 或客户管理的 CA 的 SSL/TLS 证书无法与读取池搭配使用。
  • 读取池无法复制到其他实例,例如级联副本或其他读取池。
  • 读取池必须直接从主实例复制数据。它不能是 级联副本。
  • 创建或伸缩读取池时,您必须等待与相应读取池关联的先前创建池、横向缩容或横向扩容操作完成。此限制适用于与同一主实例关联的任何其他读取池。如果您想扩缩与同一主实例关联的多个读取池,则必须等待与第一个读取池关联的扩缩操作完成后,才能开始扩缩下一个读取池。如果您发出并发请求,则可能会收到以下错误:Operation failed because another operation was already in progress.
  • 只有位于与主实例相同区域中的可用区级副本才能转换为在读取池中使用。
  • 读取池节点可能会遇到不同级别的复制延迟,这可能会导致读取不一致。如果您的应用需要高读取 一致性,我们建议您纵向伸缩单个读取副本,而不是 使用读取池。
  • 在以下情况下,Cloud SQL 会自动修复读取池节点:
    • 实例关闭时。
    • 复制中断时。

    在这些情况下,如果您从主实例创建其他登录信息,则在重新创建读取池节点后,您将无法使用这些登录信息登录。请确保您用于读取端点的登录信息可从主实例获取。

  • Microsoft 不支持服务器对象复制。

    您在读取副本上创建的任何服务器级对象都必须在主实例上创建和管理。这些对象不会自动复制。

    此行为适用于以下场景(但并非详尽列表):

    • 修复读取池。
    • 将读取副本转换为读取池。
      • 服务器级对象(例如登录信息)将变得无法访问。
      • 如果您创建的登录信息存在于原始读取副本上,但 不存在于主实例上,则该登录信息不会复制到新的 读取池节点。
    • 将读取池转换为读取副本。
      • 如果您在读取池上创建了登录信息,但未在主实例上创建,然后停用了读取池,则该登录信息将不再存在。

    以下是一些未复制的服务器级对象的示例:

    • 登录信息。
    • 链接的服务器配置。
    • SQL Server Audit 创建的数据库审核文件。
    • XEvents 会话 及其配置设置。

    如需了解详情,请参阅 Microsoft 文档。

  • 透明数据加密 (TDE) 证书在导入和导出操作中均被屏蔽。
  • 您必须始终从主实例导入和导出 TDE 证书。 无论副本类型如何,TDE 证书都会自动复制到读取池中的所有读取副本。
  • 不支持 TDE 导入和导出操作。请始终从主实例导入 TDE 证书。

后续步骤