mysql日志滚动 |
本文标签:mysql,日志滚动 1,查看log情况 复制代码 代码如下: mysql> show global variables like %log%; +---------------------------------+---------------------------------+ | Variable_name | Value | +---------------------------------+---------------------------------+ | back_log | 50 | | binlog_cache_size | 32768 | | binlog_format | MIXED | | expire_logs_days | 0 | | general_log | ON | | general_log_file | /usr/local/mysql/mysql.log | | log | ON | | log_bin | ON | | log_bin_trust_function_creators | OFF | | log_bin_trust_routine_creators | OFF | | log_error | /var/log/mysqld.log | | log_output | FILE | | log_queries_not_using_indexes | OFF | | log_slave_updates | OFF | | log_slow_queries | ON | | log_warnings | 1 | | max_binlog_cache_size | 4294963200 | | max_binlog_size | 1073741824 | | max_relay_log_size | 0 | | relay_log | | | relay_log_index | | | relay_log_info_file | relay-log.info | | relay_log_purge | ON | | relay_log_space_limit | 0 | | slow_query_log | ON | | slow_query_log_file | /usr/local/mysql/mysql-slow.log | | sql_log_bin | ON | | sql_log_off | OFF | | sql_log_update | ON | | sync_binlog | 0 | +---------------------------------+---------------------------------+ 30 rows in set (0.00 sec) 上面主要有三个日志文件,mysql.log,mysqd.log,mysql-slow.log,除了mysqld.log不能通过mysqladmin flush-logs来刷新日志外,其他的都可以,mysqld.log是服务器启动程序mysqld产生的 。 2,生成日志刷新用户 复制代码 代码如下: mysql> GRANT RELOAD ON *.* TO log@localhost IDENTIFIED BY log; Query OK, 0 rows affected (0.07 sec) mysql> flush privileges; Query OK, 0 rows affected (0.03 sec) 用root账户登录进去,添加一个log的用户 。分开清楚一点 。 3,日志滚动脚本,只保留一个星期的日志 复制代码 代码如下: [root@linux ']# vim log.sh //添加以下内容 #!/bin/sh # log refresh if [ -f $1 ]; then echo "refresh ok" 1>&2 else echo "log file do not exist;" exit 1 fi LOG=$1 DB_USER="log" DB_PASS="log" # Others vars DATE=`date +%w` BIN_DIR="/usr/local/mysql/bin" mv ${LOG} ${LOG}_${DATE} ${BIN_DIR}/mysqladmin -ulog -plog flush-logs 添加可执行权限chmod +x log.sh 脚本很简单,不过有一点要解释一下,就是mv ${LOG} ${LOG}_${DATE},第一周会产生7个文件,第二周会覆盖上周的,星期一覆盖星期一,星期二覆盖星期二,以此内推 。 4,日志滚动 复制代码 代码如下: [root@linux ']# ./log.sh /usr/local/mysql/mysql.log refresh ok [root@linux ']# ls /usr/local/mysql/ |grep mysql mysql.log mysql.log_1 |