Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.
95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.
Lock Time, 等待锁的时间.
95% of Lock , 95%的慢sql等待锁时间.
Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.
Rows examined, 扫描的行数量.
Database, 属于哪个数据库
Users, 哪个用户,IP, 占到所有用户执行的sql百分比
Query abstract, 抽象后的sql语句
Query sample, sql语句!
根据笔者上一篇文章—Linux系统上记录用户 *** 作的审计日志 。本文来利用相同的方法记录MYSQL *** 作的审计日志。
使用用mysql工具连接MySQL server的所有 *** 作会默认记录到~/.mysql_history文件中,这个文件会把所有 *** 作记录下来,包括创建用户和修改用户的明文密码,这在生产系统上是不安全的。如果不想保存,仅仅删除是不行的(文件不存在会再建立),要直接将其软连接到垃圾箱。
ln -s /dev/null ~/.mysql_history
利用上一篇文章相同的方法记录MYSQL *** 作的审计日志,是因为mysql工具本身就是有一个shell, 每次mysql连接退出后,都会把此次 *** 作的信息记录到~/.mysql_history文件中。那么可以重新定义MYSQL_HISTFILE环境变量来保存mysql日志。
先看置于/etc/profile.d目录下的环境变量的脚本mysql_history.sh,和loginlog类似。
在测试时,发现平时使用的普通用户在 *** 作mysql后无法记录,而root用户(平时没有 *** 作过mysql)可以记录成功。后来在在~/.mysql_history文件找到了 *** 作记录,估计是这个文件还存在的原因,删除后才记录到新的MYSQL_HISTFILE定义的路径。
和loginlog一样,需要定期删除过期日志,以下脚本置于/etc/cron.weekly 目录下。
delete_time=15
find /opt/mysqllog/ -mtime +$delete_time -name '*.log' -exec rm -r {} \
但是相比于loginlog,mysqllog有两点暂时没有解决。
1、定义最大的记录条数history.maxSize不知在哪定义,my.cnf?
2、每一条命令的时间记录添加。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)