近期出现生产慢查询导致机器负载爆掉,因为业务特殊性,需要长期统计慢查询日志。所以无法关闭慢查询功能,有没有什么办法既可以保留慢查询又不影响主库呢?
是否可以把慢查询放到从库上收集?如果放到从库上能收集到主库的慢查询信息吗?
目前主从同步用的是mysql自带的binlog复制。
慢查询属于底层配置,无法直接修改生效,必须重启生效。
对于生产环境是否有其它方法绕过直接在线生效?
针对这个问题,可以考虑以下解决方案:
可以在从库上开启慢查询日志,并将慢查询日志收集到从库上,这样就可以避免影响主库的性能。在从库上收集到的慢查询日志可以通过分析工具进行分析,找到慢查询的原因并进行优化。
可以通过MySQL自带的binlog复制机制将主库上的慢查询日志同步到从库上。这样可以保证从库上的慢查询日志与主库上的慢查询日志一致,方便进行分析和优化。
可以使用MySQL的SET GLOBAL命令在线修改慢查询配置,而不需要重启MySQL服务。例如,可以使用以下命令将慢查询阈值设置为2秒:
SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 2;
需要注意的是,在线修改慢查询配置可能会对MySQL的性能产生一定的影响,因此需要谨慎使用。
总之,以上三种方案都可以解决生产环境中出现的慢查询问题。具体选择哪种方案,需要根据实际情况进行评估和选择。