- 文档首页
云数据库 veDB MySQL 版
用户指南
读写分离
什么是读写分离
什么是读写分离
veDB MySQL 实例默认支持读写分离功能。客户端只需要通过连接终端的地址连接实例,数据库代理会自动将写请求发送至主节点,将读请求按照负载均衡策略发送至主节点或只读节点。
原理介绍
veDB MySQL 采用一主多从架构,可通过增加多个只读节点实现读能力的水平扩展。为了方便应用适配这种架构,代理提供读写分离功能,能够自动识别读写请求,并将其路由至不同节点,实现透明的读能力扩展。
veDB MySQL 的读写分离功能将请求流量分散到不同的节点上,其中 UPDATE、DELETE、INSERT、CREATE 等写操作仅由主节点处理,而 SELECT 读操作则会自动分摊到所有节点处理,从而实现读写分离。veDB MySQL 每个实例仅包含一个主节点,最多支持 15 个只读节点,能够极大地提升查询效率,降低主节点压力。
读写分离策略
注意事项
- 使用默认终端地址连接时,若未启用事务拆分功能,事务内的所有请求都会路由至主节点。
- 使用默认终端地址连接时,当执行 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