grep を使用して MySQL エラー ログ情報を取得する方法の詳細な説明

grep を使用して MySQL エラー ログ情報を取得する方法の詳細な説明

MySQL のメンテナンスを容易にするために、エラー情報を収集するためのインターフェースを提供するスクリプトが作成されました。これらのエラー メッセージは MySQL エラー ログから取得され、エラー ログのパスは grep mysql で取得できます。

関連するコードはすべて次のとおりです。

#!/usr/bin/env python2.7
#-*- エンコーディング: utf-8 -*-
 
「」
このモジュールは、毎日のMySQLログから異常またはエラー情報を抽出するために使用されます。著者:xiaomo
メールアドレス: [email protected]
「」
 
インポートOS
インポートシステム
インポート文字列
日時インポートから*
 
# デフォルトの文字デコーダーは utf-8 です
リロード(sys)
sys.setdefaultencoding('utf-8') 
 
COMMON_FLAGS = ["エラー"、"例外"、"失敗"、"クラッシュ"、"修復"]
 
def _contain_flag(cur_str):
  COMMON_FLAGS のフラグの場合:
    string.lower(cur_str) にフラグがある場合:
      Trueを返す
  Falseを返す
 
「」
現在の MySQL インスタンスの error_log ファイル パスを取得します。
def _get_mysql_error_log_path():
  ログパス = ''
  grep_infos = os.popen('ps aux | grep mysql | grep "log-error"').read()
  len(grep_infos) > 1の場合:
    grep_infos = grep_infos.split("log-error=")
  len(grep_infos) > 1の場合:
    grep_infos = grep_infos[1].split(' ')
  len(grep_infos) > 1の場合:
    ログパス = grep_infos[0]
  log_pathを返す
 
「」
MySQL エラー ログ内の例外またはエラー情報を含む行を読み取ります。
エラーログの取得と開始日付の取得:
  エラー情報 = []
  f = open(error_log, 'r')
  行 = f.readlines()
  行内の行の場合:
    データ配列 = 行を分割します(' ')
    len(data_array) > 0 かつ len(data_array[0]) == 10 の場合:
      dt_strs = データ配列[0].split('-')
      cur_date = date(int(dt_strs[0]), int(dt_strs[1]), int(dt_strs[2]))
      cur_date >= begin_date かつ _contain_flag(line): の場合
        error_infos.append(行)
  f.close()
  error_infosを返す
 
「」
MySQL エラー ログ情報を組み立てて返します"""
get_mysql_errors を定義します(begin_date=date.today()-timedelta(1)):
  試す:
    err_log_path = _get_mysql_error_log_path()
    len(err_log_path) > 1の場合:
      _get_error_info(err_log_path, begin_date) を返します
  例外を除く、e:
    "[get_mysql_errors]%s"%e を印刷  
  戻る []

ご興味ある方はぜひ参考にして学習してください。123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL の厄介な Aborted 警告をケーススタディで分析する
  • MYSQL SERVER のログファイルを縮小する方法
  • MySQL の一般的なログの概要
  • MySQLトランザクションとMySQLログの詳細な説明
  • MySQL Binlog ログの読み取り時によくある 3 つのエラー
  • MySQL でスロークエリログ機能を有効にする方法
  • mysql binlog (バイナリログ) を表示する方法
  • MySQL スロークエリログの基本的な使い方チュートリアル
  • MySQL 中断された接続警告ログの分析

<<:  Vue は左右のスライド効果のサンプルコードを実装します

>>:  Docker ベースの Redis 1 マスター、2 スレーブ、3 センチネルの実装

推薦する

Dockerコンテナを閉じずに終了する方法の詳細な説明

Docker コンテナに入った後、コンテナを終了すると、コンテナは Exited 状態に変わります。...

MySQLデータベースが大きすぎる場合にバックアップと復元を行う方法

コマンド: mysqlhotcopyこのコマンドは、ファイルをコピーする前にテーブルをロックし、不完...

jQueryはシャトルボックス効果を実現します

この記事では、シャトルボックス効果を実現するためのjQueryの具体的なコードを参考までに紹介します...

MySQL (8 および 5.7) の Docker インストール

この記事では、Dockerを使用してMySQLデータベースとリモートアクセス構成をデプロイする方法を...

Vueはカルーセルのフレームレート再生を実装します

この記事の例では、カルーセルのフレームレート再生を実現するためのVueの具体的なコードを参考までに共...

Apache Spark 2.0ジョブは完了するまでに長い時間がかかります

現象Apache Spark 2.x を使用すると、Spark ジョブがすべて完了しているにもかかわ...

Tomcat パイプライン モードのパイプラインとバルブの詳細な説明

序文比較的複雑な大規模システムでは、複雑なロジックで処理する必要があるオブジェクトまたはデータ フロ...

一般的なフロントエンドJavaScriptメソッドのカプセル化

目次1. 値を入力し、そのデータ型を返す** 2. アレイ重複排除3. 文字列の重複排除4. ディー...

GZIP 圧縮 Tomcat と Web パフォーマンスの改善プロセス図

1. はじめに最近、あるプロジェクトに取り組んでいたのですが、サーバーからクライアントに返される J...

CentOS 7 で MySQL 5.7 をインストールして設定する

この記事では、以下の環境をテストします。 CentOS 7 64 ビット 最小 MySQL 5.7 ...

MySQL Workbench の使い方チュートリアルの詳しい説明

目次(I) Workbenchを使用してデータベースを操作する①データベースを作成する② データベー...

React 純粋関数コンポーネント setState がページ更新を更新しない問題の解決方法

目次問題の説明:原因分析:解決:補足: Reactでは、フックが使用されている場合、useState...

Easyswoole ワンクリック インストール スクリプトとパゴダ インストール エラー

よくある質問easyswoole を初めて使用する場合は、次のような問題に遭遇することがよくあります...

ElementUIカスタムCSSスタイルが有効にならない問題を解決する

例えば、入力ボックスがあります <el-入力 ref="mySearch"...