最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用logrotate歸檔MySQL日志的實(shí)現(xiàn)

 更新時(shí)間:2025年09月24日 10:10:47   作者:漁不是魚  
本文介紹了使用logrotate工具對(duì)MySQL日志進(jìn)行自動(dòng)歸檔和管理,通過配置logrotate,可以實(shí)現(xiàn)按周歸檔,文件大于2G時(shí)執(zhí)行,保留最近兩周的數(shù)據(jù),感興趣的可以了解一下

背景

前面說過因?yàn)?code>vim大文件導(dǎo)致的OOM,所以后續(xù)優(yōu)化方案里面寫了要對(duì)MySQL的日志進(jìn)行歸檔操作。
經(jīng)過調(diào)研,一般兩種方案實(shí)現(xiàn):
1使用腳本crontab去清理備份歸檔
2使用logrotate配置進(jìn)行去清理歸檔
我這里主要介紹第二種方案,因?yàn)楸容^通用,可以清理各種日志

logrotate簡(jiǎn)介

logrotate是專門用來歸檔處理各種服務(wù)產(chǎn)生的日志

具有以下特點(diǎn):

 1. 支持對(duì)日志自動(dòng)進(jìn)行歸檔壓縮
 2. 支持對(duì)日志進(jìn)行按天或者按周,月年等多維度進(jìn)行歸檔
 3. 可以設(shè)置保留的時(shí)間,根據(jù)個(gè)數(shù)實(shí)現(xiàn)
 4. 支持歸檔操作進(jìn)行郵件告知

使用方式

安裝方式
一般系統(tǒng)都會(huì)自帶的,沒有的話yum install logrotate

常用參數(shù):

daily                        每天進(jìn)行切換
weekly                        每周進(jìn)行切換
rotate num                    保留num份歸檔日志文件
olddir                        指定歸檔的目錄
missingok                    如不存在該文件也不報(bào)錯(cuò)且進(jìn)入下一輪
size                        大于這個(gè)大小,才會(huì)進(jìn)行歸檔,否則忽略,單位是bytes
dateext                        對(duì)歸檔的日志文件增加日期后綴,默認(rèn)格式'%Y%m%d'
create                         創(chuàng)建一個(gè)新的文件(與copy copytruncate互斥)
copy                        將原文件的內(nèi)容拷貝一份,不清理源文件內(nèi)容
copytruncate                將原文件拷貝一份,然后清空源文件內(nèi)容
mail                        rotate的時(shí)候郵件告知
notifempty                    如果日志文件為空,不會(huì)進(jìn)行日志歸檔切換
compress                    對(duì)歸檔的日志進(jìn)行壓縮,默認(rèn)用gzip壓縮,文件名以'.gz結(jié)尾'

工作原理

#1.默認(rèn)會(huì)安裝在/etc/目錄下
$ ls -l /etc/logrotate.
logrotate.conf   這是默認(rèn)讀取配置文件一般不要去動(dòng)
logrotate.d/     默認(rèn)讀取配置文件會(huì)去讀這個(gè)目錄下的清理配置,優(yōu)先級(jí)是先看目錄下面的參數(shù),
如果沒有的話就以logrotate.conf文件中的參數(shù)為準(zhǔn)

#2.logrotate.conf文件內(nèi)容
$ cat /etc/logrotate.conf |grep include
include /etc/logrotate.d    可以看到會(huì)包含這個(gè)目錄

#3.logrotate.d目錄下的內(nèi)容,
開始說過,logrotate是用來清理服務(wù)日志的,所以可以看到下面的
所以下面都是每個(gè)服務(wù)都會(huì)有一個(gè)默認(rèn)的清理規(guī)則
$ ls -l /etc/logrotate.d:
總用量 40
-rw-r--r--  1 root root   91 9月  30 2020 bootlog
-rw-r-----  1 root root  144 2月  23 2021 falcon-sensor
-rw-r--r--  1 root root  194 11月 16 2020 httpd
-rw-r--r--  1 root root 1938 3月  14 18:46 mysql
-rw-r--r--  1 root root  203 4月   1 2020 php-fpm
-rw-r--r--  1 root root   88 4月  28 2021 subscription-manager
-rw-r--r--  1 root root  224 12月 31 2015 syslog
-rw-r--r--. 1 root root  100 10月 31 2018 wpa_supplicant
-rw-r--r--  1 root root  103 10月  2 2020 yum
-rw-r--r--  1 root root  132 6月  28 2021 zabbix-agent

#4.如何調(diào)用?
分為兩步:
第一步是/etc/cron.daily/下面的一個(gè)crontab,每天會(huì)自動(dòng)運(yùn)行一次
$ ls -l /etc/cron.daily/
-rwx------. 1 root root 219 4月   1 2020 logrotate

第二步在/etc/anacrontab 里面會(huì)每天3點(diǎn)22分調(diào)用etc/cron.daily的cron任務(wù)
$ cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1	5	cron.daily		nice run-parts /etc/cron.daily
7	25	cron.weekly		nice run-parts /etc/cron.weekly
@monthly 45	cron.monthly		nice run-parts /etc/cron.monthly

MySQL配置logrotate

首先,第一個(gè)問題,對(duì)于MySQL日志新文件的生成方式如何選擇?
copy VS copytruncate VS create

我的建議是使用copytruncate
在介紹三種方案之前,先介紹一下inode
inode簡(jiǎn)單講就是識(shí)別物理文件的唯一文件號(hào)。
所以三個(gè)的流程就如下:

#create
1.先重命名源文件,這時(shí)候mv后的文件的inode不會(huì)變化,假設(shè)此時(shí)inode為1。
2.創(chuàng)建一個(gè)新的原來文件的名字,這時(shí)是一個(gè)新的inode,假設(shè)這時(shí)為2
3.如果不重啟,因?yàn)楫?dāng)前服務(wù)寫的還是inode為1的文件,所以不會(huì)寫入到新文件,
只有重啟服務(wù)后才會(huì)寫入新的文件(inode為2的文件)

#copy
1.拷貝源文件的內(nèi)容到新文件,不清空文件
2.會(huì)導(dǎo)致源文件一直變大,不符合我們MySQL的要求

#copytruncate
1.拷貝源文件的內(nèi)容到新文件,假設(shè)源文件inode為1,此時(shí)新文件就會(huì)變成2
2.truncate 源文件的內(nèi)容
3.服務(wù)繼續(xù)寫inode為1的文件,不需要重啟服務(wù)

綜上,考慮我們還有filebeat會(huì)去采集slow log,所以inode必須不能變化,數(shù)據(jù)庫服務(wù)也不可能說重啟就重啟,所以最好的選擇就是copytruncate模式
最終的文件內(nèi)容如下:

$ cat /etc/logrotate.d/mysql
/data/logs/mysql-error.log
{
    weekly
    rotate 2
    missingok
    dateext
    size 2G
    copytruncate
    notifempty
    compress
}

簡(jiǎn)單介紹下,就是每周進(jìn)行歸檔,保留最近兩周的數(shù)據(jù),而且是文件大于2G的時(shí)候才會(huì)進(jìn)行操作。

最后

這里只是對(duì)MySQL日志進(jìn)行歸檔,當(dāng)然大家想要對(duì)其他日志進(jìn)行歸檔的話,也是可以直接使用的,只要是日志都可以通過這種方式去實(shí)現(xiàn)。

到此這篇關(guān)于用logrotate歸檔MySQL日志的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)logrotate歸檔MySQL日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mariadb遠(yuǎn)程登陸配置及問題解決

    Mariadb遠(yuǎn)程登陸配置及問題解決

    這篇文章主要介紹了Mariadb遠(yuǎn)程登陸配置及問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • cmd中MySQL中文數(shù)據(jù)亂碼問題解決方法

    cmd中MySQL中文數(shù)據(jù)亂碼問題解決方法

    MySQL是默認(rèn)utf8編碼的,所建數(shù)據(jù)庫也是設(shè)置utf8編碼,使用程序可以新增中文數(shù)據(jù),在cmd中使用SQL語句新增數(shù)據(jù)則報(bào)錯(cuò),有類似情況的朋友可以參考下本文
    2014-02-02
  • MySQL數(shù)據(jù)庫設(shè)計(jì)之利用Python操作Schema方法詳解

    MySQL數(shù)據(jù)庫設(shè)計(jì)之利用Python操作Schema方法詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫設(shè)計(jì)之利用Python操作Schema方法詳解,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • 使用MySQL建立外鍵約束時(shí)報(bào)錯(cuò)3780的解決方案

    使用MySQL建立外鍵約束時(shí)報(bào)錯(cuò)3780的解決方案

    在創(chuàng)建MySQL外鍵約束時(shí),報(bào)錯(cuò)3780通常是因?yàn)橹鞅砗蛷谋碇袑?duì)應(yīng)字段的數(shù)據(jù)類型不一致,使用Navicat可視化界面修改數(shù)據(jù)類型,即可解決此問題,這是一個(gè)常見的數(shù)據(jù)庫設(shè)計(jì)錯(cuò)誤,確保數(shù)據(jù)類型一致是關(guān)鍵
    2024-11-11
  • Windows下修改mysql的data文件夾存放位置的方法

    Windows下修改mysql的data文件夾存放位置的方法

    這篇文章主要介紹了在Windows下修改mysql的data文件夾存放位置的方法,需要的朋友可以參考下
    2014-03-03
  • MySQL精準(zhǔn)控制Binlog日志數(shù)量的三種方案

    MySQL精準(zhǔn)控制Binlog日志數(shù)量的三種方案

    作為數(shù)據(jù)庫管理員,你是否經(jīng)常為服務(wù)器磁盤爆滿而抓狂?Binlog就像數(shù)據(jù)庫的“黑匣子”,默默記錄著每一次數(shù)據(jù)變動(dòng),但若放任不管,幾天內(nèi)這些日志文件就能吞噬上百GB空間!今天教你三招精準(zhǔn)控制Binlog數(shù)量,從此告別空間焦慮,需要的朋友可以參考下
    2025-05-05
  • 防止mysql重復(fù)插入記錄的方法

    防止mysql重復(fù)插入記錄的方法

    這篇文章主要為大家詳細(xì)介紹了防止mysql重復(fù)插入記錄的方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • MySql存儲(chǔ)過程之邏輯判斷和條件控制

    MySql存儲(chǔ)過程之邏輯判斷和條件控制

    本篇文章給大家介紹了mysql存儲(chǔ)過程之邏輯判斷、條件控制,涉及到的知識(shí)點(diǎn)有邏輯判斷、條件控制方面的內(nèi)容,對(duì)mysql存儲(chǔ)過程邏輯判斷和條件控制感興趣的朋友可以參考下本文
    2015-10-10
  • MySQL的存儲(chǔ)引擎InnoDB和MyISAM

    MySQL的存儲(chǔ)引擎InnoDB和MyISAM

    這篇文章主要介紹了MySQL的存儲(chǔ)引擎InnoDB和MyISAM,MyISAM?用的是非聚集索引方式,即數(shù)據(jù)和索引落在不同的兩個(gè)文件上,下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • MySQL 備份還原數(shù)據(jù)庫批處理

    MySQL 備份還原數(shù)據(jù)庫批處理

    在日常工作中,我們往往需要對(duì)MySQL數(shù)據(jù)庫進(jìn)行備份,有時(shí)可以通過拷貝整個(gè)文件,有時(shí)通過備份整個(gè)庫還有的時(shí)候我們就只需要備份某個(gè)表。
    2009-07-07

最新評(píng)論

澳门| 勃利县| 晋州市| 十堰市| 清远市| 连江县| 集安市| 洛扎县| 县级市| 苏州市| 长垣县| 于田县| 安仁县| 六枝特区| 富裕县| 手游| 邛崃市| 武义县| 永嘉县| 平果县| 白水县| 吉首市| 舞钢市| 玉山县| 安顺市| 临夏县| 太保市| 庆云县| 信宜市| 桓仁| 缙云县| 堆龙德庆县| 女性| 安阳市| 玉溪市| 广宗县| 巴林左旗| 广河县| 宝坻区| 安龙县| 双鸭山市|