ProxySQL 读写分离策略
1.配置读写分离策略:路由规则
配置读写分离,就是配置ProxySQL 路由规则,ProxySQL 的路由规则非常灵活,可以基于用户,基于schema,以及单个sql语句实现路由规则定制。
注意:我这只是试验,只是配置了几个简单的路由规则,实际情况配置路由规则,不应该是就根据所谓的读、写操作来进行读写分离,而是从收集(慢日志)的各项指标找出压力大,执行频繁的语句单独写规则,做缓存等等。比如 先在测试几个核心sql语句,分析性能提升的百分比,在逐渐慢慢完善路由规则。
生产中使用读写分离 :建议基于hash code 值做读写分离,不要建太多的规则
和查询规则有关的表有两个:mysql_query_rules和mysql_query_rules_fast_routing
表mysql_query_rules_fast_routing是mysql_query_rules的扩展,并在以后评估快速路由策略和属性(仅在ProxySQL 1.4.7+中可用)。
介绍一下改表mysql_query_rules的几个字段:
active:是否启用这个规则,1表示启用,0表示禁用
match_pattern 字段就是代表设置规则
destination_hostgroup 字段代表默认指定的分组
apply 代表真正执行应用规则。
2.创建规则:
A.把所有以select 开头的语句全部分配到读组中,读组编号是0
B.把 select .. for update 语句,这是一个特殊的select语句,会产生一个写锁(排他锁),把他分到编号为1 的写组中,其他所有操作都会默认路由到写组中
insert into mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) values (1,1,'^select.*for update$',1,1); insert into mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) values (2,1,'^select',0,1); load mysql query rules to runtime; save mysql query rules to disk;
select … for update规则的rule_id必须要小于普通的select规则的rule_id,因为ProxySQL是根据rule_id的顺序进行规则匹配的
通过对外访问账号测试。
如果想在 ProxySQL 中查看SQL请求路由信息stats_mysql_query_digest
[stats]> select hostgroup,schemaname,username,digest_text,count_star from stats_mysql_query_digest; +-----------+--------------------+----------+----------------------------------+------------+ | hostgroup | schemaname | username | digest_text | count_star | +-----------+--------------------+----------+----------------------------------+------------+ | 1 | information_schema | yoon | select @@server_id | 1 | | 1 | information_schema | yoon | show databases | 1 | | 1 | information_schema | yoon | select @@version_comment limit ? | 1 | +-----------+--------------------+----------+----------------------------------+------------+
count_start 统计sql 语句次数,可以分析哪些 sql ,频繁执行
读写分离设置成功后,还可以调权重,比如让某台机器承受更多的读操作
update mysql_servers set weight=10 hostname='192.168.1.2'; load mysql servers to runtime; save mysql servers to disk;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2019-06-27 运行python脚本后台执行