详解grep获取MySQL错误日志信息的方法

 更新时间:2018年09月29日 10:51:32   投稿:laozhang  
在本篇文章中小编给大家整理了关于通过grep 获取MySQL错误日志信息的方法的相关知识点内容,有需要的朋友们跟着学习下。

为方便维护MySQL,写了个脚本用以提供收集错误信息的接口。这些错误信息来自与MySQL错误日志,而 通过grep mysql可以获取error-log的路径。

以下是全部相关代码:

#!/usr/bin/env python2.7
#-*- encoding: utf-8 -*-
 
"""
该模块用于提取每天mysql日志中的异常或错误信息
author: xiaomo
email: moxiaomomo@gmail.com
"""
 
import os
import sys
import string
from datetime import *
 
# 預設字符解碼器為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
 
"""
获取当前mysql实例的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错误日志中包含异常或错误信息的行
"""
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错误日志信息
"""
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 []

有兴趣的朋友们参考学习下,感谢大家对脚本之家的支持。

相关文章

  • MySQL重置root密码提示

    MySQL重置root密码提示"Unknown column ‘password"的解决方法

    这篇文章主要介绍了MySQL重置root密码提示"Unknown column ‘password"的解决方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • mysql prompt的用法详解

    mysql prompt的用法详解

    本篇文章是对mysql中prompt的用法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL存储过程的权限问题小结

    MySQL存储过程的权限问题小结

    这篇文章主要介绍了MySQL存储过程的权限问题小结及mysql 创建存储过程权限问题,感兴趣的朋友一起看看吧
    2018-04-04
  • 使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失

    使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失

    这篇文章主要介绍了使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失的相关资料,需要的朋友可以参考下
    2015-09-09
  • SQL算术运算符之加法、减法、乘法、除法和取模的用法例子

    SQL算术运算符之加法、减法、乘法、除法和取模的用法例子

    算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算,下面这篇文章主要给大家介绍了关于SQL算术运算符之加法、减法、乘法、除法和取模用法的相关资料,需要的朋友可以参考下
    2024-03-03
  • mysql 8.0.17 安装与使用教程图解

    mysql 8.0.17 安装与使用教程图解

    这篇文章主要介绍了mysql 8.0.17 安装与使用教程图解,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 详解Mysql双机热备和负载均衡的实现步骤

    详解Mysql双机热备和负载均衡的实现步骤

    MySQL数据库没有增量备份的机制,但它提供了一种主从备份的机制,就是把主数据库的所有的数据同时写到备份数据库中。这篇文章主要介绍了Mysql的双机热备和负载均衡,需要的朋友可以参考下
    2019-10-10
  • mysql把查询结果按逗号分割的实现示例

    mysql把查询结果按逗号分割的实现示例

    使用MySQL数据库的GROUP_CONCAT函数,可以将查询结果按逗号或其他指定分隔符连接成字符串,这种方法适用于需要汇总数据并以字符串形式展示的场景,本文介绍了GROUP_CONCAT函数的基本用法和注意事项,感兴趣的可以了解一下
    2024-09-09
  • MySQL架构设计思想详解

    MySQL架构设计思想详解

    这篇文章主要介绍了MySQL架构设计思想详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • Mysql修改server uuid的方法分享

    Mysql修改server uuid的方法分享

    这篇文章主要给大家介绍了关于Mysql修改server uuid的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09

最新评论