詳解grep獲取MySQL錯(cuò)誤日志信息的方法
為方便維護(hù)MySQL,寫了個(gè)腳本用以提供收集錯(cuò)誤信息的接口。這些錯(cuò)誤信息來(lái)自與MySQL錯(cuò)誤日志,而 通過(guò)grep mysql可以獲取error-log的路徑。
以下是全部相關(guān)代碼:
#!/usr/bin/env python2.7
#-*- encoding: utf-8 -*-
"""
該模塊用于提取每天mysql日志中的異?;蝈e(cuò)誤信息
author: xiaomo
email: moxiaomomo@gmail.com
"""
import os
import sys
import string
from datetime import *
# 預(yù)設(shè)字符解碼器為utf-8
reload(sys)
sys.setdefaultencoding('utf-8')
COMMON_FLAGS = ["error", "exception", "fail", "crash", "repair"]
def _contain_flag(cur_str):
for flag in COMMON_FLAGS:
if flag in string.lower(cur_str):
return True
return False
"""
獲取當(dāng)前mysql實(shí)例的error_log文件路徑
"""
def _get_mysql_error_log_path():
log_path = ''
grep_infos = os.popen('ps aux | grep mysql | grep "log-error"').read()
if len(grep_infos) > 1:
grep_infos = grep_infos.split("log-error=")
if len(grep_infos) > 1:
grep_infos = grep_infos[1].split(' ')
if len(grep_infos) > 1:
log_path = grep_infos[0]
return log_path
"""
讀取mysql錯(cuò)誤日志中包含異?;蝈e(cuò)誤信息的行
"""
def _get_error_info(error_log, begin_date):
error_infos = []
f = open(error_log, 'r')
lines = f.readlines()
for line in lines:
data_array = line.split(' ')
if len(data_array) > 0 and len(data_array[0]) == 10:
dt_strs = data_array[0].split('-')
cur_date = date(int(dt_strs[0]), int(dt_strs[1]), int(dt_strs[2]))
if cur_date >= begin_date and _contain_flag(line):
error_infos.append(line)
f.close()
return error_infos
"""
組裝并返回mysql錯(cuò)誤日志信息
"""
def get_mysql_errors(begin_date=date.today()-timedelta(1)):
try:
err_log_path = _get_mysql_error_log_path()
if len(err_log_path) > 1:
return _get_error_info(err_log_path, begin_date)
except Exception,e:
print "[get_mysql_errors]%s"%e
return []
有興趣的朋友們參考學(xué)習(xí)下,感謝大家對(duì)腳本之家的支持。
相關(guān)文章
解析SQL 表結(jié)構(gòu)信息查詢 含主外鍵、自增長(zhǎng)
本篇文章是對(duì)SQL 表結(jié)構(gòu)信息查詢 含主外鍵、自增長(zhǎng)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Linux 安裝JDK Tomcat MySQL的教程(使用Mac遠(yuǎn)程訪問(wèn))
這篇文章主要介紹了Linux 安裝JDK Tomcat MySQL(使用Mac遠(yuǎn)程訪問(wèn)),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
mysql?8.0.27?安裝配置方法圖文教程(Windows64位)
這篇文章主要為大家詳細(xì)介紹了mysql?8.0.27?下載、安裝與配置圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
MySQL 有輸入輸出參數(shù)的存儲(chǔ)過(guò)程實(shí)例
MySQL 有輸入輸出參數(shù)的存儲(chǔ)過(guò)程實(shí)例2009-08-08
mysql數(shù)據(jù)庫(kù)插入速度和讀取速度的調(diào)整記錄
由于項(xiàng)目變態(tài)需求;需要在一個(gè)比較短時(shí)間段急劇增加數(shù)據(jù)庫(kù)記錄(兩三天內(nèi),由于0增加至4億)。在整個(gè)過(guò)程調(diào)優(yōu)過(guò)程非常艱辛2012-07-07
MySQL時(shí)間盲注的五種延時(shí)方法實(shí)現(xiàn)
MySQL時(shí)間盲注主要有五種,sleep(),benchmark(t,exp),笛卡爾積,GET_LOCK() RLIKE正則,本文就主要介紹了這五種方法,感興趣的可以了解一下2021-05-05
MySQL中使用auto_increment修改初始值和步長(zhǎng)
本文主要介紹了MySQL中使用auto_increment修改初始值和步長(zhǎng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
mysql 8.0.11 macos10.13安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql 8.0.11 macos10.13安裝配置方法圖文教程,mysql數(shù)據(jù)庫(kù)安裝及配置環(huán)境變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07

