You need to enable JavaScript to run this app.
文档中心
云数据库 veDB MySQL 版

云数据库 veDB MySQL 版

复制全文
下载 pdf
读写分离
什么是读写分离
复制全文
下载 pdf
什么是读写分离
veDB MySQL 实例默认支持读写分离功能。客户端只需要通过连接终端的地址连接实例,数据库代理会自动将写请求发送至主节点,将读请求按照负载均衡策略发送至主节点或只读节点。​
原理介绍​
veDB MySQL 采用一主多从架构,可通过增加多个只读节点实现读能力的水平扩展。为了方便应用适配这种架构,代理提供读写分离功能,能够自动识别读写请求,并将其路由至不同节点,实现透明的读能力扩展。​
veDB MySQL 的读写分离功能将请求流量分散到不同的节点上,其中 UPDATE、DELETE、INSERT、CREATE 等写操作仅由主节点处理,而 SELECT 读操作则会自动分摊到所有节点处理,从而实现读写分离。veDB MySQL 每个实例仅包含一个主节点,最多支持 15 个只读节点,能够极大地提升查询效率,降低主节点压力。​
读写分离策略​
​
终端模式​
转发策略​
请求类型​
读写终端​
仅发送到主节点的请求​
  • 所有 DDL 和 DML 操作。​
  • 所有事务中的请求。​
说明​
开启事务拆分后的第一个写请求之前的所有读请求都会发送到只读节点。​
  • 自定义函数。​
  • 存储过程。​
  • EXECUTE 语句。​
  • 使用到临时表的请求。​
  • SELECT 1494838。​
​
同时发送到主节点和只读节点的请求​
  • 非事务读请求。​
  • COM_STMT_EXECUTE 命令(执行预处理 SQL)。​
说明​
开启了主节点接受读功能后,同时发往主节点和只读节点的请求。​
​
总是发送到所有节点的请求​
  • 所有系统变量的更改请求。​
  • USE 命令。​
  • 用户变量的查询和更改。​
  • KILL(终止数据库连接或取消正在运行的 SQL)。​
  • COM_STMT_PREPARE 命令。​
  • COM_CHANGE_USER、COM_QUIT、COM_SET_OPTION 等命令。​
只读终端​
不允许处理写请求的操作,所有读请求会基于活跃请求数发送到各个只读节点。​
​
​
注意事项​
  • veDB MySQL 不支持压缩协议。​
  • 使用默认终端地址连接时,若未启用事务拆分功能,事务内的所有请求都会路由至主节点。​
  • 使用默认终端地址连接时,当执行 SHOW PROCESSLIST 命令时,系统会将所有节点的结果合并后返回。​
  • 若执行了多语句或调用了存储过程,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离功能。​
  • 连接终端地址本身并没有最大连接数的限制,连接数由后端 DBengine 限制,不同规格的实例默认最大连接数不同,具体数量参见产品规格。​
  • 请勿在运行 Multi Statements 或调用存储过程时修改环境变量,例如 set names utf8mb4;select * from t1;,否则可能会导致请求路由到只读节点和主节点查到的数据不一致。​
  • 当使用应用连接池建立 URL 链接时,为了防止连接池在网络或其他非预期场景下丢包导致应用连接池 hang 住的问题,建议在 URL 链接中增加 connectTimeout 和 socketTimeout 参数。参数说明请参见 MySQL 官方文档。示例:java url: jdbc:mysql://ip:port/db?connectTimeout=60000&socketTimeout=300000;。​
功能特性​
云数据库 veDB MySQL 版的读写分离功能主要包含以下特性:​
​
最近更新时间:2026.06.12 10:29:40
这个页面对您有帮助吗?
有用
有用
无用
无用