[Linux] 利用logrotate對MySQL日誌進行輪轉
日誌輪轉特別適用於具有固定檔名的日誌檔案,比如MySQL的出錯日誌、常規查詢日誌、慢查詢日誌等。Linux系統有一個非常好用的根據logratate可以實現自動輪轉,本文介紹它的原理和用法。
預設情況下,logrotate部署為每天執行的cron job,你可以在目錄/etc/cron.daily裡找到名為logrotate的配置檔案。那麼它是在每天的上面時候執行的呢?開啟檔案/etc/crontab就知道了,下面是我機器上的情況:
從上面的配置我們可以知道,/etc/cron.daily是在每天凌晨4:02執行。也就是說,每天4:02分/etc/cron.daily/logrotate將會自動執行,下面是它的內容:SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
從上面我們可以知道,logratate預設的配置檔案是/etc/logratate.conf,下面是它的內容:
從上面我們可以知道,這個預設的配置檔案將讀取目錄/etc/logrotate.d,所以我們只要把自己寫的配置檔案放到該目錄下即可。EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0 [
[email protected] /etc/cron.daily ]# cat /etc/logrotate.conf # see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp -- we'll rotate them here /var/log/wtmp { monthly minsize 1M create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly minsize 1M create 0600 root utmp rotate 1 }
MySQL本省提供了一個rotate的參考配置檔案,在support-files目錄下,檔名為mysql-log-rotate,內容如下:
# This logname can be set in /etc/my.cnf
# by setting the variable "err-log"
# in the [safe_mysqld] section as follows:
#
# [safe_mysqld]
# err-log=/opt/mysql/data/mysqld.log
#
# If the root user has a password you have to create a
# /root/.my.cnf configuration file with the following
# content:
#
# [mysqladmin]
# password = <secret>
# user= root
#
# where "<secret>" is the password.
#
# ATTENTION: This /root/.my.cnf should be readable ONLY
# for root !
/opt/mysql/data/mysqld.log {
# create 600 mysql mysql
notifempty
daily
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
if test -x /opt/mysql/bin/mysqladmin && \
/opt/mysql/bin/mysqladmin ping &>/dev/null
then
/opt/mysql/bin/mysqladmin flush-logs
fi
endscript
}
logrotate常見選項:
選項 | 含義 |
compress | 壓縮日誌檔案的所有非當前版本 |
copy | 複製當前的日誌檔案,忽略create引數 |
copytruncate | 複製當前的日誌檔案,並置空當前檔案 |
daily | 每天輪日誌檔案i |
dateext | 輪換的日誌字尾為-YYYYMMDD格式 |
delaycompress | 壓縮除了當前和最近之外的所有其他版本 |
missingok | 如果日誌不存在,不會報錯 |
notifempty | 如果日誌為空,則不輪換 |
rotate n | 在輪換方案中包含n個版本的日誌 |
size=logsize | 如果日誌檔案大於logsize才輪換 |
我們只要根據自己的需要,修改相應配置即可,下面是一個例子:
1)建立MySQL root密碼檔案
vi /root/.my.cnf
[mysqladmin]
password = ***
user= root
chmod 600 /root/.my.cnf
2)把mysql-log-rotate拷貝至/etc/logrotate.d目錄下,修改其內容為:
/data/mysql/log/slow.log
/data/mysql/log/alert.log {
create 600 mysql mysql
notifempty
daily
rotate 7
missingok
# compress
postrotate
# just if mysqld is really running
if test -x /opt/mysql/bin/mysqladmin && \
/opt/mysql/bin/mysqladmin ping &>/dev/null
then
/opt/mysql/bin/mysqladmin flush-logs
fi
endscript
}
3)執行以下命令測試
/usr/sbin/logrotate -f /etc/logrotate.d/mysql-log-rotate
相關推薦
[Linux] 利用logrotate對MySQL日誌進行輪轉
日誌輪轉特別適用於具有固定檔名的日誌檔案,比如MySQL的出錯日誌、常規查詢日誌、慢查詢日誌等。Linux系統有一個非常好用的根據logratate可以實現自動輪轉,本文介紹它的原理和用法。 預設情況下,logrotate部署為每天執行的cron job,你可以在目錄/et
利用logrotate對Tomcat日誌進行切分
最近在做伺服器資源釋放的時候發現有一臺伺服器的find命令無法使用(原因不詳),所以之前利用cronolog對Tomcat日誌進行切分之後。是基於包含find命令的shell指令碼做的自動清理。這時就想到了用logrotate對Tomcat日誌進行切分。 1、指令碼如下: /usr/lo
利用logrotate對nginx日誌進行切分
1、指令碼如下: /gdsfapps/flgw/logs/nginx/*.log{ missingok dateext notifempty daily rotate 7 sharedscripts postrotate if [ -f /usr/local/nginx/logs/nginx
Django中models利用ORM對Mysql進行查表的語句
一: all() 返回模型類對應表格中所有的資料。 二:get():返回表格中滿足條件的一條資料,如果查到多條資料,則拋異常:MultipleObjectsReturned,查詢不到資料,則拋異常:DoesNotExist。 三:filter():引數寫查詢條件,返回滿足條件 Q
linux下使用awk,wc,sort,uniq,grep對nginx日誌進行分析和統計
通過對awk, wc, uniq, grep, sort等命令的組合,分析nginx的access和error日誌。 統計各種總量、單位時間量。 access.log日誌格式(見下圖) 說明: a). 按照Tab鍵拆分每項資料 b). 欄位含義(如下說明)
nodejs 利用對mysql資料庫進行查詢和插入資料
nodejs對資料庫的操作是比較簡單的。下面看一個對laughter庫操作: 這是專案檔案結構圖: config.js的配置如下: //資料庫配置檔案 module.exports = { mysql: {
利用mysqltuner工具對mysql資料庫進行優化
mysqltuner工具使用,本工具建議定期執行,發現目前MYSQL資料庫存在的問題及修改相關的引數工具的下載及部署 解決環境依賴,因為工具是perl指令碼開發的,需要perl指令碼環境 # yun install -y perl* 下載指令碼 在http://mysql
怎樣在Linux中用Vim對文件進行密碼保護
linux文件加密Vim 有個 -x 選項,這個選項能讓你在創建文件時用它來加密。一旦你運行下面的 vim 命令,你會被提示輸入一個密鑰:$ vim -x file.txt 警告:正在使用弱加密方法;參見 :help ‘cm‘ 輸入加密密鑰:******* 再次輸入相同密鑰:*******如果第二次輸入的密鑰
CentOS Linux使用logrotate分割管理日誌
日誌切割logrotate程序是一個日誌文件管理工具。用於分割日誌文件,刪除舊的日誌文件,並創建新的日誌文件,起到“轉儲”作用。可以節省磁盤空間。logrotate命令格式:logrotate [OPTION...] <configfile>-d, --debug :debug模式,測試配置文件是
django 利用ORM對單表進行增刪改查
man api light 賦值 連接 取出 簡單 extern follow 牛小妹上周末,一直在嘗試如何把數據庫的數據弄到界面上。畢竟是新手,搞不出來,文檔也看不懂。不過沒關系,才剛上大學。今晚我們就來解釋下,要把數據搞到界面的第一步。先把數據放到庫裏,然後再把數據從庫
logstash對nginx日誌進行解析
eat sent bytes list min oat try port log logstash對nginx日誌進行解析過濾轉換等操作;配置可以用於生產環境,架構為filebeat讀取日誌放入redis,logstash從redis讀取日誌後進行操作;對user_agen
利用opencv對圖片大小進行修改
執行環境:ubuntu16.04 + opencv 2.4.13 + c++ (系統g++版本5.4.0) #include <iostream> #include <fstream> #include <opencv2/core/core.hpp> #inc
利用python 將 mysql 資料進行抽取並清理成標準格式後 存入MSSql 資料中
from pymongo import MongoClientfrom pymysql import connectimport pymssqlfrom datetime import datetime, timedeltaimport time Nagios 資料庫的IP 地址 NagiosDB_IP
DJANGO專案用WEB的方式對MYSQL資料庫進行備份匯出等管理任務的實現
環境:PYTHON2.7,DJANGO1.9.9 urls.py 加一行: url(r'^mysqldatamanage/', views.mysqldatamanage,name='mysqldatamanage'), views.py新增對應的方mysqldatam
對mysqlbinlog日誌進行操作的總結包括 啟用,過期自動刪除 等
操作命令: show binlog events in ‘binlog.000016’ limit 10; reset master 刪除所有的二進位制日誌 flush logs 產生一個新的binlog日誌檔案 show master logs; / show binary log
Spring Boot 2.x使用Spring Data Jpa對MySQL資料庫進行CRUD操作
只需兩步!Eclipse+Maven快速構建第一個Spring Boot專案 構建了第一個Spring Boot專案。 Spring Boot連線MySQL資料庫 連線了MySQL資料庫。 本文在之前的基礎上,使用Spring Data Jpa對MySQL
在Linux系統下進入MySql資料庫進行操作
1、進入mysql資料庫 [email protected]# mysql -root -123456 <root是使用者名稱,123456是密碼> 2、查詢所有的庫 mysql> show databases; 3、進入資料庫“student”是庫名 mysql>
利用Comparator對列舉型別進行排序的實現(ComparatorChain、BeanComparator、FixedOrderComparator)
背景: 工作中遇到按照類的某個屬性排列,這個屬性是個列舉型別(完全是自定義的,沒有明顯的比較標誌),現要按照要求的優先順序排列。 如一個蘋果類有大小和甜度屬性,大小有“特大”,“大”,“中”,“小”,“很小”的等級,甜度有“很甜”,“甜”
C++對MySQL資料庫進行匯出和匯入操作
相信大家應該在網上看到很多利用SQL語句對MySQL資料庫的表或者資料庫本身進行匯出和匯入操作。在window環境下利用dos命令列匯出資料庫(我的mysq直接裝在c盤根目錄下下,其bin目錄為:c:/mysql/bin): 1、執行MySQL資料庫匯出操作: c:\my