日期:2014-05-16  浏览次数:20782 次

mysql slow-log大文件切分问题
现在我有N台mysql服务器,每台mysql服务器均有一个slow_query_log_file。我的目的就是将每台mysql服务器上面的slow_log集中到指定的机器上面用mysqlsla分析,并根据需求找出查询时间最长的query,以便以后进行优化。

我遇到的问题是:现在每台机器的slow-log都非常的大,以后肯定会越来越大,这样在日志传输与分析中肯定非常的耗时,所以我就想将slow-log每个星期切换一次,先mv $slow_log_file file_%date,然后touch $slow_log_file,在不关闭数据库的情况下这样重命名会导致mysql不正常运行么?想问问大家都是怎么处理类似问题的?有没有什么聪明的办法?谢谢。。

------解决方案--------------------
把以下代码放在crontab里面 每天0点执行 

#!/bin/bash

source ~/.bash_profile

# define common variables

log_home="/home/mysql/logs/"
cur_access_log="mysql_slow.log"
host_prefix=`uname -n | awk -F . '{print $1}'`

export TZ=CST-7
achive_time=`date "+%Y%m%d"`
achive_access_log="${host_prefix}.mysqlslow_${achive_time}.log"
unset TZ

cd ${log_home}

# rotate log
cp ${cur_access_log} ${achive_access_log}

# clean up current log
cp /dev/null ${cur_access_log}