MySQL5.7限制general_log日志大小的實(shí)現(xiàn)
背景
需求:
- 在MySQL 5.7.41中開啟
general_log并限制其大小,避免快速增長占用硬盤空間。
解決:
- 通過定時(shí)任務(wù),執(zhí)行簡單的腳本,判斷
general_log日志的大小,實(shí)現(xiàn)對通用查詢?nèi)罩镜?ldquo;每日備份”或“每日清理”的功能。
多說幾句:
- 等保二級要求必須開啟MySQL數(shù)據(jù)庫的通用查詢?nèi)罩?code>general_log ,但其文件大小增長速度太快,數(shù)據(jù)庫有效數(shù)據(jù)都還沒增長多少,硬盤空間可能就會被
general_log日志占用不少。而binog至少還能通過binlog_expire_logs_seconds過期時(shí)間參數(shù)設(shè)置日志保存策略,避免占用空間。沒有這樣的參數(shù)限制general_log,必然要通過其它手段限制general_log空間。
實(shí)際操作:備份腳本和清理腳本
提供兩種思路:
- 思路一:每日檢查日志大小,當(dāng)其超過某個(gè)閾值時(shí),將文件復(fù)制歸檔到某個(gè)專門存儲日志的目錄。
- 思路二:每日檢查日志大小,當(dāng)超過某個(gè)閾值時(shí),不執(zhí)行歸檔備份,直接將
general_log內(nèi)容清除。
MySQL中開啟general日志需要修改my.cnf文件,增加以下兩行指定日志存儲路徑:
[mysqld] general_log = 1 general_log_file = /mnt/general.log
思路一:每日備份日志
參考腳本 bak_general_log.sh
#!/bin/bash
LOG_FILE="/mnt/general.log"
MAX_SIZE=100
if [ -f "$LOG_FILE" ]; then
CURRENT_SIZE=$(du -m "$LOG_FILE" | awk '{print $1}')
if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; then
mv "$LOG_FILE" "$LOG_FILE.$(date +%Y%m%d%H%M%S)"
touch "$LOG_FILE"
chmod 0640 "$LOG_FILE"
chown mysql:mysql "$LOG_FILE"
systemctl restart mysql
fi
fi
思路二:每日清空日志
參考腳本 clear_general_log.sh
#!/bin/bash
LOG_FILE="/mnt/general.log"
MAX_SIZE=100
if [ -f "$LOG_FILE" ]; then
CURRENT_SIZE=$(du -m "$LOG_FILE" | awk '{print $1}')
if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; then
echo > "$LOG_FILE"
fi
fi
快速驗(yàn)證腳本的方法:dd創(chuàng)建日志文件
- 用dd命令快速生成指定大小的文件,比如生成101MB大小的
/mnt/general.log文件,可以執(zhí)行以下命令:
dd if=/dev/zero of=/mnt/general.log bs=1M count=101
- 執(zhí)行之前準(zhǔn)備的腳本文件,查看結(jié)果。
參考截圖

實(shí)際操作:配置corntab定時(shí)任務(wù)
給腳本配置可執(zhí)行權(quán)限:
chmod +x bak_general_log.sh chmod +x clear_general_log.sh
使用cron等工具將腳本定期執(zhí)行,例如每天凌晨執(zhí)行一次:
crontab -e
然后在編輯器中添加以下內(nèi)容:
0 0 * * * /mnt/bak_general_log.sh 0 0 * * * /mnt/clear_general_log.sh
上述腳本二選一即可。
結(jié)束
注意:
- 備份腳本中沒有指定備份目錄。
- 備份腳本中涉及了MySQL應(yīng)用重啟。
- 備份腳本的具體內(nèi)容可根據(jù)實(shí)際情況修改。
到此這篇關(guān)于MySQL5.7限制general_log日志大小的文章就介紹到這了,更多相關(guān)MySQL5.7限制general_log日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql 8.0.12安裝配置方法圖文教程(Windows版)
這篇文章主要為大家詳細(xì)介紹了Windows下mysql 8.0.12安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
MYSQL如何自動(dòng)為查詢數(shù)據(jù)的結(jié)果編上序號詳解
這篇文章主要給大家介紹了關(guān)于MYSQL如何自動(dòng)為查詢數(shù)據(jù)的結(jié)果編上序號的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧。2017-11-11
三種東西永遠(yuǎn)不要放到mysql數(shù)據(jù)庫里
這篇文章主要介紹了mysql數(shù)據(jù)庫不能存儲的三樣?xùn)|西,需要的朋友可以參考下2014-06-06
mysql8.0?.ibd文件恢復(fù)表結(jié)構(gòu)的實(shí)現(xiàn)
本文主要介紹了mysql8.0?.ibd文件恢復(fù)表結(jié)構(gòu)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
MySQL?實(shí)戰(zhàn)入門從"增刪改查"到"高效查詢"的操作
本文介紹了MySQL的核心CRUD操作,包括增刪改查的詳細(xì)語法和最佳實(shí)踐,還涵蓋了多表連接、分組過濾、子查詢、事務(wù)控制和索引管理等高級功能,感興趣的朋友跟隨小編一起看看吧2026-02-02
mysql community server 8.0.12安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql community Server 8.0.12安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08

