You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置MaxScale仅在目标从节点执行SET NAMES等会话查询?

可以实现!通过MaxScale的过滤器与路由规则配置,就能让SET NAMES这类会话级查询仅在目标Slave节点执行,避免远程Master的延迟损耗,具体配置方法如下:

1. 配置会话语句过滤器

使用MaxScale的sessionfilter模块,拦截指定的会话级语句并路由到Slave节点组。在MaxScale配置文件(通常为/etc/maxscale.cnf)中添加过滤器配置:

[SessionFilter]
type=filter
module=sessionfilter
# 匹配需要路由到Slave的会话语句,可根据需求扩展规则
match=SET NAMES|SET character_set_%|SET collation_%
route_to=slave

2. 关联过滤器到读写分离服务

将上述过滤器绑定到你的读写分离路由服务,确保会话语句被正确拦截和路由:

[ReadWriteService]
type=service
router=readwritesplit
# 这里server1为远程Master,server2、server3为本地Slave节点
servers=server1,server2,server3
user=maxscale_user
password=maxscale_pass
# 绑定之前配置的会话过滤器
filters=SessionFilter

3. 验证配置效果

  • 查看MaxScale日志(/var/log/maxscale/maxscale.log),确认SET NAMES等语句的目标节点为Slave而非Master。
  • 在Slave节点开启查询日志,检查是否收到对应会话语句,同时确认Master节点无相关记录。

注意事项

  • 确保MaxScale版本在2.0及以上,该版本开始支持sessionfilter模块。
  • 需保证Slave节点的字符集、排序规则等基础配置与Master一致,避免因会话变量差异导致数据读取不一致。
  • 若有其他会话级语句需要路由到Slave,直接扩展match字段的正则表达式即可。

内容的提问来源于stack exchange,提问作者user2531657

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:23:09