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

推薦する

Windows 版 MySQL のインストール、起動、基本設定に関する詳細なグラフィック チュートリアル

ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...

Nexusプライベートサーバー構築原理とチュートリアル分析

1つ。 Nexus プライベート サーバーを構築する理由は何ですか?社内の開発メンバーは全員外部ネッ...

C# は MySQL コマンドラインのバックアップとリカバリを実装します

MySQL データベースをバックアップするためのツールは多数あります。過去 2 日間で、C# を使用...

MySql ファジークエリ JSON キーワード取得ソリューションの例

目次序文オプション1:オプション2:オプション3:オプション4(最終的に採用されたオプション):要約...

Vueは州、都市、地区のカスケード選択を実現します

最近、省、市、地区のカスケード選択効果を実装する必要があります。省、市、地区のデータはすべてローカル...

HTMLノードの追加と削除の簡単な例

<br />HTMLノードの追加と削除の簡単な例<input type="...

Mac OS10.12 に mysql5.7.18 をインストールするチュートリアル

ウェブ全体を検索して、さまざまな落とし穴を見つけましたが、問題は解決しませんでした。ついに自分でも分...

Tomcat8はcronologを使用してCatalina.Outログを分割します

背景tomcat によって生成された catalina.out ログ ファイルが分割されていない場合...

mysql-5.7.21-winx64 無料インストール版のインストール - Windows チュートリアル詳細説明

1 ダウンロードアドレスは https://dev.mysql.com/downloads/mysq...

MySQL 整合性制約の定義と例のチュートリアル

目次整合性制約整合性制約の定義整合性制約の分類主キー制約単一の主キーと複合主キーの違い主キーフィール...

crontab 実行時間とシステム時間の不一致の解決方法

序文LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...

MySQL 時間差関数 (TIMESTAMPDIFF、DATEDIFF)、日付変換計算関数 (date_add、day、date_format、str_to_date)

1. 時間差関数(TIMESTAMPDIFF、DATEDIFF) MySQLを使用して時間差を計算...

div ボックス モデルの使用経験の概要

ボックスモデルの計算<br />マージン + ボーダー + パディング + コンテンツC...

MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコード

MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコードMySQL シーケ...

HTML+CSS+JavaScript でガールフレンド版のスクラッチ カードを作成します (一度見ればすぐに覚えられます)

誰もがスクラッチ チケットで遊んだことがあると思います。子供の頃、ポケットにお金が入るとすぐに友達に...