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は、選択した月に応じて日付に対応する曜日を動的に表示します。

私たち謙虚なプログラマーは、今でもこう歌わなければなりません。「あなたも私も、この世に生まれて、一日...

JavaScriptの浅いコピーと深いコピーについての簡単な説明

目次1. 直接譲渡2. 浅いコピー3. ディープコピー1. JSONオブジェクトメソッド2. 再帰コ...

MySQL の日付フォーマットと複雑な日付範囲クエリ

目次序文クエリの使用シナリオ例時間間隔クエリクエリ日付と今日の時間の比較データ一般的なサイクルタイム...

MySQL で lower_case_table_names を記録する際の落とし穴の詳細な説明

1 原因プロジェクトがデータベースを移行して再起動した後、「T_AAAテーブルが存在しません」という...

html.cssオーバーフローの包括的な理解

html.cssオーバーフローの包括的な理解XML/HTML コードコンテンツをクリップボードにコピ...

Nginx+SSL による双方向認証を実装するためのサンプル コード

まずディレクトリを作成する cd /etc/nginx mkdir ssl cd ssl CA と自...

Dockerコンテナでは、イメージを簡素化してサイズを縮小する方法を詳しく説明しています

目次1.画像レイヤーの数を減らす1. 命令の統合2. 多段階ビルド3. スクワッシュ機能を有効にする...

HTML ドキュメントに CSS を埋め込む一般的な 3 つの方法

HTMLでCSSを定義するには、埋め込み、リンク、インラインの3つの方法が一般的に使用されます。 1...

HTML いくつかの特別な分割線効果

1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...

HTML doctype の役割の紹介

ドキュメント モードには次の 2 つの機能があります。 1. HTML文書を解析するためにどのHTM...

vue3 の setUp とリアクティブ関数の使用方法の詳細な説明

1. いつsetUpを実行するかvue3 ではメソッドを正常に使用できるようになったことは誰もが知っ...

Alibaba Cloud Server の詳細な展開 (グラフィック チュートリアル)

最近、Web 開発のフロントエンドとバックエンドの技術を学んだので、その後の管理を容易にするためにプ...

ウェブサイト構築経験概要

<br />注目を集めるウェブサイトを作成するには、どのような原則に従うべきでしょうか?...

MySQLクエリは、フィールドが数値とカンマではないことを指定します。

コアSQL文数字を含まない MySQL クエリ ステートメント: SELECT * FROM tes...

MySQL と Golan 間の従来の分散トランザクションのための 7 つのソリューション

目次1. 基本理論1.1 取引1.2 分散トランザクション2. 分散トランザクションソリューション2...