logrotate mysql_利用logrotate将mysql log截断

1.授权用户

CREATE USER 'log_rotate'@'localhost' IDENTIFIED BY '123456';

GRANT RELOAD,SUPER ON *.* to 'log_rotate'@'localhost';

FLUSH PRIVILEGES;

2.配置登录信息

2.1 密文

mysql_config_editor set \

--login-path=logrotate \

--host=localhost \

--user=log_rotate \

--port 3306 \

--password

2.2 或者普通明文登录

bash # vi /root/.my.cnf

[client]

user=log_rotate

password=''

bash # chmod 600 /root/.my.cnf

3.测试连接

[root@master logrotate.d]# mysqladmin --login-path=logrotate ping

mysqld is alive

4.确认log路径

mysql --login-path=logrotate -e "show global variables like 'slow_query_log_file'"

mysql --login-path=logrotate -e "show global variables like 'log_error'"

5.logrotate内容

vi /etc/logrotate.d/mysql

/mysqlData/dataerror.log /mysqlData/dataslow.log {

daily

create 660 mysql mysql

dateext

dateformat -%Y%m%d.%s

nocopytruncate

olddir oldlog

rotate 30

missingok

nocompress

sharedscripts

notifempty

postrotate

if test -x /usr/local/mysql/bin/mysqladmin &&

env HOME=/root /usr/local/mysql/bin/mysqladmin --login-path=logrotate ping > /dev/null 2>&1

then

env HOME=/root/ /usr/local/mysql/bin/mysql --login-path=logrotate -e 'select @@global.long_query_time into @lqt_save; set global long_query_time=2000; set global slow_query_log=0; select sleep(2); FLUSH ERROR LOGS; FLUSH SLOW LOGS;select sleep(2); set global long_query_time=@lqt_save; set global slow_query_log=1;' > /var/log/mysqladmin.flush-logs 2>&1

fi

endscript

}

6.crontab

59 23 * * * /usr/sbin/logrotate --force /etc/logrotate.d/mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值