最近,在线上环境上,使用ProxySQL中间件做为MySQL读写分离负载均衡工具时,出现以下问题。
在ProxySQL中间件上设置缓存后,之前没有查询出的数据,再次写入后,再次查询依然没有数据。这个问题耗费我一下下午的进行去排查。
先说一下我公司的环境:
为了增加查询性能,所有定义了一个rule_id最小的查询缓存,根据ProxySQL的配置规则,rule_id最小的先进行查询匹配,如果匹配上了,且apply=0,则再继续向后匹配。以下截图,省略了其他查询配置
字段说明:
select rule_id,username,active,apply,cache_ttl,match_digest,destination_hostgroup from mysql_query_rules
字段说明:
select username,password,active,default_hostgroup,default_schema,transaction_persistent
-> from mysql_users
删除ProxySQL的查询缓存,或设置active=0后,可查询出结果数据。
Admin > update mysql_query_rules set active=0 where rule_id=10;
Admin> Load mysql query rules to runtime;
Admin> save mysql query rules to disk;
设置为active=0,或删除此记录后,此缓存将不再生效。
再次执行查询,问题解决:
每一个小的细节,都是技术能力的提升,努力吧。
留言与评论(共有 0 条评论) “” |