数据库代理常见问题

本文汇总了PolarDB数据库代理相关的常见问题。

为什么刚插入的语句,立即查的时候查不到?

读写分离的架构下,主节点和只读节点之间复制会有延迟,但PolarDB支持会话一致性,即同一个会话内保证能读到之前的更新,详情请参见会话一致性

是否支持0毫秒延迟的读取?

PolarDB集群的主节点和只读节点在正常负载情况下,具有毫秒级的延迟,读写分离连接地址暂时不支持在数据写入后0毫秒的读取。如果要求0毫秒延迟的读取,可使用主地址(动态指向PolarDB主节点)将读写请求发给主节点。如何查看主地址,请参见查看连接地址和端口

为什么主节点负载很高?

主节点CPU负载高的原因有多种,常见的排查方法如下:

  • 如果业务直接访问主地址,可以检查一下是否有业务配置使用主地址。

  • 业务的更新请求数量远高于读请求数量,导致主节点压力大。

  • 如果代理地址将主库是否接受读设置为,您可以将主库是否接受读修改为,以减少部分读请求路由到主节点。

  • 检查代理地址事务拆分是否开启。有些ORM默认将所有请求封装在事务里,导致所有请求都路由到主节点。可以开启事务拆分,减少事务写前读请求路由到主节点。

若在Sysbench压测中,您可以在0.5版本的Sysbench中加上--oltp-skip-trx=on或在1.0版本的Sysbench中加上--skip-trx=on去掉事务后再进行压测。详细的负载均衡策略及事务拆分请参见负载均衡

为什么某个节点的请求数比别的节点多?

当前是根据负载来分发请求的,负载小的节点接收的请求数会更多。

新增的只读节点会自动加入到读写分离吗?

是的。

数据库一致性级别设置为全局一致性(强)相比最终一致性(弱)和会话一致性(中)是否有性能差异?

全局一致性(强)相比最终一致性(弱)和会话一致性(中)会有一定的性能损失。如果您的业务对并发数要求较高,请在业务低谷期进行级别变更设置。

数据库代理企业版的企业通用版企业独享版有什么区别?

  • 企业通用版:对应集群子系列的通用规格,它可以共享CPU物理资源,可根据业务负载,提供智能秒级资源弹性扩展能力。

  • 企业独享版:对应集群子系列的独享规格,它可以独占CPU物理资源,具有更好的性能稳定性。

从集群地址中删除已选择的只读节点对业务有影响吗?

  • 如果删除可读可写模式的集群地址下的只读节点,当删除的只读节点上有正在执行中的请求、事务或临时表时,该集群地址上的业务连接会直接断连。否则,业务无感知。

  • 如果删除只读模式的集群地址下的只读节点,该集群地址上的业务连接会直接断连。

删除只读节点的具体影响请参见只读节点下线

PolarDB支持哪些读写模式?

当前PolarDB的集群和自定义地址支持两种读写模式:只读和可读可写(自动读写分离)。

  • 读模式:所有请求仅会被路由到只读(RO)节点,写入(RW)节点无法挂载到只读地址。如果业务请求尝试连接到只读地址进行写入,将会收到错误提示。此模式支持基于连接数和基于活跃请求数的负载均衡。

  • 可读可写模式:系统自动支持读写分离,默认情况下会挂载写入(RW)节点。该模式仅支持基于活跃请求数的负载均衡。

修改读写模式仅对新建连接生效,已有的老连接保持原来的模式。详细配置请参见:配置数据库代理

Binlog dump 时报错 "Connections-based load balancing policy does not support BINLOG_DUMP in non-block mode"?

目前基于连接数负载均衡的只读地址不支持在non-block模式下拉取Binlog文件,请在控制台将只读地址的负载均衡策略切换为基于活跃请求数。

数据库代理版本1.x.x2.x.x是如何确定的?

当前PolarDB MySQL数据库代理包含1.x.x2.x.x两大版本,两个版本的区别如下:

  • 1.x.x

    202121日前创建的集群下的数据代理版本,该版本不再进行新功能迭代开发,只进行问题修复。

  • 2.x.x

    202121日(包含)后新创建的集群下的数据代理版本,该版本属于当前的主流版本,所有的新增功能都在该版本上进行迭代开发。新增的功能包括连接保持、数据脱敏等。

在控制台中进行小版本升级,是否可以将数据库代理版本从1.x.x升级到2.×.x?

不可以,1.x.x的数据库代理版本只能升级到1.x.x最新版本,不能直接升级到2.x.x。若您有相关需求,请参见数据库代理版本可以从1.x.x升级到2.×.x?

数据库代理版本可以从1.x.x升级到2.×.x?

可以,但您的集群需要满足如下要求:

  • 集群为PolarDB MySQL8.0.2版本时,无内核版本要求。

  • 集群为PolarDB MySQL8.0.1版本时,修订版本需为8.0.1.1.10以上。

  • 集群为PolarDB MySQL5.7版本时,修订版本需为5.7.1.0.6以上。

  • 集群为PolarDB MySQL5.6版本时,修订版本需为5.6.1.0.24以上。

若您的集群满足以上要求,可以联系我们为您处理。

在控制台中进行大版本升级时,数据库代理版本是否会直接升级2.×.x?

是的。大版本升级的时候,数据库代理版本会自动升级2.x.x版本,且不支持指定到1.x.x版本。