全局一致性(高性能模式)常见问题

本文介绍了使用全局一致性(高性能模式)功能的常见问题。

开启全局一致性(高性能模式)功能后,如果某些查询不需要使用全局一致性读,该如何操作?

在RO节点开启全局一致性(高性能模式)后,默认对所有的新建连接生效。如果某些查询不需要使用该功能,可以通过以下命令来关闭当前连接的全局一致性读:

SET Session innodb_polar_scc = OFF
说明

关闭当前连接的全局一致性(高性能模式)功能,集群版本需满足以下条件之一:

  • PolarDB MySQL版8.0.2版本,且修订版本为8.0.2.2.16及以上。

  • PolarDB MySQL版8.0.1版本,且修订版本为8.0.1.1.33及以上。

  • PolarDB MySQL版5.7版本,且修订版本为5.7.1.0.28及以上。

如何设置全局一致性读超时时间?

您可以登录PolarDB控制台通过设置参数loose_innodb_polar_scc_wait_timeout的值来设置全局一致性读超时时间。如果超时,客户端会收到以下错误信息:

Wait replication complete timeout, please retry
说明

对于写入压力较大,或写入压力不稳定的集群,您可以将该参数loose_innodb_polar_scc_wait_timeout的值设置大一些。

全局一致性读超时转发机制是什么?

  • 对于PolarDB MySQL版5.7版本,开启全局一致性(高性能模式)后,转发机制如下:

    • 通过集群地址路由至RO节点的查询,如果出现全局一致性等待超时,会由Proxy自动转发至RW节点进行处理。客户端不会收到报错信息。

    • 通过只读Endpoint地址(没有挂载RW节点)路由到RO节点的查询,如果出现全局一致性等待超时,则不会转发到RW节点进行处理。

  • 对于PolarDB MySQL版8.0版本,开启全局一致性(高性能模式)后,转发机制如下:

    • 若数据库代理版本为2.8.36及以上:

      • 通过集群地址路由至RO节点的查询,如果出现全局一致性等待超时,会由Proxy自动转发至RW节点进行处理。客户端不会收到报错信息。

      • 通过只读Endpoint地址(没有挂载RW节点)路由到RO节点的查询,如果出现全局一致性等待超时,则不会转发到RW节点进行处理。

    • 若数据库代理版本为2.8.36以下:

      • 开启全局一致性(高性能模式)后,通过任意地址连接并路由到RO节点的请求,在出现全局一致性等待超时时,都不会转发至RW节点进行处理。

      • 您可以通过开启RDMA日志传输来降低RO节点的读延迟,或通过参数loose_innodb_polar_scc_wait_timeout来调整全局一致性读超时时间。

全局一致性读超时后,如何降级?

您需要登录PolarDB控制台将参数loose_innodb_polar_scc_timeout_degrade的值设置为ON,当全局一致性读超时后,查询操作会自动降级为非一致性读取,且客户端不会收到报错信息。

如何避免低写入负载场景下的读延迟?

您可以登录PolarDB控制台将高性能参数innodb_flush_log_at_trx_commit的值设置为1,来避免低写入场景下的读延迟。