mysql 日志滚动

日志滚动解决日志文件过大问题,比如我开启了general_log,这个日志呢是记录mysql服务器上面所运行的所有sql语句;比如我开启了mysql的慢查询。

1,查看一开log情况

查看复制打印?

  1. mysql> show global variables like '%log%';  
  2. +---------------------------------+---------------------------------+  
  3. | Variable_name                   | Value                           |  
  4. +---------------------------------+---------------------------------+  
  5. | back_log                        | 50                              |  
  6. | binlog_cache_size               | 32768                           |  
  7. | binlog_format                   | MIXED                           |  
  8. | expire_logs_days                | 0                               |  
  9. | general_log                     | ON                              |  
  10. | general_log_file                | /usr/local/mysql/mysql.log      |  
  11. | log                             | ON                              |  
  12. | log_bin                         | ON                              |  
  13. | log_bin_trust_function_creators | OFF                             |  
  14. | log_bin_trust_routine_creators  | OFF                             |  
  15. | log_error                       | /var/log/mysqld.log             |  
  16. | log_output                      | FILE                            |  
  17. | log_queries_not_using_indexes   | OFF                             |  
  18. | log_slave_updates               | OFF                             |  
  19. | log_slow_queries                | ON                              |  
  20. | log_warnings                    | 1                               |  
  21. | max_binlog_cache_size           | 4294963200                      |  
  22. | max_binlog_size                 | 1073741824                      |  
  23. | max_relay_log_size              | 0                               |  
  24. | relay_log                       |                                 |  
  25. | relay_log_index                 |                                 |  
  26. | relay_log_info_file             | relay-log.info                  |  
  27. | relay_log_purge                 | ON                              |  
  28. | relay_log_space_limit           | 0                               |  
  29. | slow_query_log                  | ON                              |  
  30. | slow_query_log_file             | /usr/local/mysql/mysql-slow.log |  
  31. | sql_log_bin                     | ON                              |  
  32. | sql_log_off                     | OFF                             |  
  33. | sql_log_update                  | ON                              |  
  34. | sync_binlog                     | 0                               |  
  35. +---------------------------------+---------------------------------+  
  36. 30 rows in set (0.00 sec)  

上面主要有三个日志文件,mysql.log,mysqd.log,mysql-slow.log,除了mysqld.log不能通过mysqladmin flush-logs来刷新日志外,其他的都可以,mysqld.log是服务器启动程序mysqld产生的。

2,生成日志刷新用户

查看复制打印?

  1. mysql> GRANT RELOAD ON *.* TO 'log'@'localhost' IDENTIFIED BY 'log';  
  2. Query OK, 0 rows affected (0.07 sec)  
  3.   
  4. mysql> flush privileges;  
  5. Query OK, 0 rows affected (0.03 sec)  

用root账户登录进去,添加一个log的用户。分开清楚一点。

3,日志滚动脚本,只保留一个星期的日志

查看复制打印?

  1. [root@linux ~]# vim log.sh   //添加以下内容  
  2.   
  3. #!/bin/sh  
  4. # log refresh   
  5.   
  6. if [ -f $1 ];  
  7. then  
  8.     echo "refresh ok" 1>&2  
  9. else  
  10.     echo "log file do not exist;"  
  11.     exit 1  
  12. fi  
  13.   
  14. LOG=$1  
  15. DB_USER="log"  
  16. DB_PASS="log"                                                                                                         
  17.   
  18. # Others vars  
  19. DATE=`date +%w`                                          
  20.   
  21. BIN_DIR="/usr/local/mysql/bin"  
  22.   
  23. mv ${LOG} ${LOG}_${DATE}  
  24.   
  25. ${BIN_DIR}/mysqladmin  -ulog -plog flush-logs  

添加可执行权限chmod +x log.sh

脚本很简单,不过有一点要解释一下,就是mv ${LOG} ${LOG}_${DATE},第一周会产生7个文件,第二周会覆盖上周的,星期一覆盖星期一,星期二覆盖星期二,以此内推。

4,日志滚动

  1. [root@linux ~]# ./log.sh /usr/local/mysql/mysql.log  
  2. refresh ok  
  3. [root@linux ~]# ls /usr/local/mysql/ |grep mysql  
  4. mysql.log  
  5. mysql.log_1  



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/mysql/1419.html

猜你喜欢

转载自blog.csdn.net/weixin_41643439/article/details/88180390