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 センチネルの実装

推薦する

Vue は小数点付きの星評価を実装します

この記事では、小数点付きの星評価を実装するためのVueの具体的なコードを参考までに共有します。具体的...

MySQLにおける正規表現の一般的な使用法

MySQL における Regexp の一般的な使用法特定の文字列を含むあいまい一致# コンテンツフィ...

Dockerが正常に起動しない原因と解決策を詳しく解説

1. Docker 起動時の異常なパフォーマンス: 1. ステータスが繰り返し再起動している場合は、...

Dockerカスタムネットワークコンテナ相互接続

目次序文-リンクカスタムネットワーク質問する序文前回は、 -Linkパラメータを使用してコンテナ間の...

Dockerはターミナルで中国語を入力できない問題を解決します

序文:ある日、DockerでMySQLサービスを構築したところ、MySQLのコマンドラインで中国語の...

HTMLテキスト内のすべてのタグを置き換える方法

(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...

Reactでレシピシステムを実装する方法を解説した記事

目次1. レシピ集1.1 プロジェクトの背景1.2 テクノロジースタック1.3 開発環境1.4. プ...

ウェブページ作成に役立つコード

<br />ホームページの右側にあるスクロールバーを削除するにはどうすればよいですか? ...

nginx設定ファイルの解釈の詳細な説明

nginx 設定ファイルは主に 4 つの部分に分かれています。 main{#(グローバル設定) ht...

CSS が複数のクラスに一致する方法のサンプルコード

CSSは複数のクラスにマッチする次の HTML タグ li、クラスはオープン スタイルです。私の要件...

MySQLの基本的な共通コマンドの概要

目次MySQL の基本的な共通コマンド1. SQL文2. テーブルを作成する3. フィールドのプロパ...

トップに戻るボタンの例の JavaScript 実装

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

Vue は水の波紋効果のクリックフィードバック指示を実装します

目次水波効果実装を見てみましょう水の波紋のデフォルトスタイルをカスタマイズする水の波紋の位置と直径を...

VueのRender関数

目次1. ノード、ツリー、仮想DOM 2. 仮想DOM 2.1 データオブジェクトの詳細2.2 制約...

TypeScript名前空間の説明

目次1. 定義と使用1.1 定義1.2 使用2. 複数のファイルに分割する3. エイリアス序文: T...