MySQL 慢日志文件按天生成(切割)


1.必要性

在生成環境中,MySQL實例一般都會開啟慢日志的,我們可以基於慢日志進行性能分析,但是文件小會逐漸增加,從幾十兆到幾十G,如此大的文件給我們分析帶來了調整。如果我們部署了日志平台,例如通過filebeat +logstash實時讀取,當慢日志文件過大也會導致Server性能降低(例如,讀取時內存消耗明顯)。所以,防止mysql慢查詢日志文件過大,進行按天切割很有必要。

2.編輯執行文件chop_slow_log.sh

#!/bin/bash

# The version is defined V.001
# Version   ModifyTime                ModifyBy              Desc
# Ver001    2018-03-02 12:00         Carson.Xu             Create the Scripts File
# Desc: This file is used by cron to cut the slow log and remove the history slow log.

#### 部署前應檢查slow 所在的路徑 (默認為/data/mysql/data/slow.log,否則進行調整)

####time=`date -d yesterday +"%Y-%m-%d"`
time=$(date "+%Y-%m-%d")
rmbaktime=$(date -d '-7 days' "+%Y-%m-%d")

##賬號(執行 flush-logs 命令 ,需要有reload權限,允許使用flush語句)
user="用戶名"
##應安全要求,賬號密碼不能同時出現在一個文件中,所以單獨存放
passwd=$(cat /data/dbsave/mysql_upwd)

####刷新慢查詢日志文件
/usr/local/mysql/bin/mysqladmin -u$user -p$passwd flush-logs slow


####重命名舊慢查詢日志
mv /data/mysql/data/slow.log /data/mysql/data/slow-$time.log


####生成新慢查詢日志文件
/usr/local/mysql/bin/mysqladmin -u$user -p$passwd flush-logs slow


####刪除歷史slow.log
rm -rf /data/mysql/data/slow-$rmbaktime.log

 注意 . 文件設置切割后的慢日志保留7天。

3.設置定時任務(crontab)

46 14 * * * /data/scripts/chop_slow_log.sh >> /data/scripts/chop_slow_log.log 2>&1

4.相關知識補充

4.1 設置成crontab 報錯

單獨調試執行chop_slow_log.sh正常,但是設置成定時任務時,就報錯。報錯信息如下:

/data/scripts/chop_slow_log.sh: line 20: mysqladmin: command not found
/data/scripts/chop_slow_log.sh: line 28: mysqladmin: command not found

解決方案是:mysqladmin必須是完成的路徑,軟鏈接不可以。

即將文件中的mysqladmin調整為/usr/local/mysql/bin/mysqladmin即可。

4.2 MySQL權限

主要權限列表如下list.

權  限 作用范圍 作  用
all 服務器 所有權限
select 表、列 選擇行
insert 表、列 插入行
update 表、列 更新行
delete 刪除行
create 數據庫、表、索引 創建
drop 數據庫、表、視圖 刪除
reload 服務器 允許使用flush語句
shutdown 服務器 關閉服務
process 服務器 查看線程信息
file 服務器 文件操作
grant option 數據庫、表、存儲過程 授權
references 數據庫、表 外鍵約束的父表
index 創建/刪除索引
alter 修改表結構
show databases 服務器 查看數據庫名稱
super 服務器 超級權限
create temporary tables 創建臨時表
lock tables 數據庫 鎖表
execute 存儲過程 執行
replication client 服務器 允許查看主/從/二進制日志狀態
replication slave 服務器 主從復制
create view 視圖 創建視圖
show view 視圖 查看視圖
create routine 存儲過程 創建存儲過程
alter routine 存儲過程 修改/刪除存儲過程
create user 服務器 創建用戶
event 數據庫 創建/更改/刪除/查看事件
trigger 觸發器
create tablespace 服務器 創建/更改/刪除表空間/日志文件
proxy 服務器 代理成為其它用戶
usage 服務器 沒有權限


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM