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 | 服務器 | 沒有權限 |