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

推薦する

MySQLクエリ書き換えプラグインの使用

クエリ書き換えプラグインMySQL 5.7.6 以降、MySQL Server は、サーバーが実行す...

Dreamweaver8を使用してウェブサイトのファイルをチェックして整理する方法

Dreamweaver8 を使用して独自の Web サイトを作成する目的は何ですか?インターネットに...

MySQL ストアド プロシージャで if ステートメントを使用する詳細な例

この記事では、例を使用して、MySQL ストアド プロシージャでの if ステートメントの使用方法を...

単一/複数行テキストを含む div を垂直方向に中央揃えする N 通りの方法 (高さ不明/高さ固定)

この問題について話すとき、垂直方向の中央揃えを設定するための vertical-align 属性が ...

複数サーバーの負荷分散を実現するためのNginx構成

Nginx ロード バランシング サーバー: IP: 192.168.0.4 (Nginx-Serv...

Vueのvue-tree-colorコンポーネントの組織構造図の事例を詳しく解説

目次ネプローダーをインストールするプラグインのインポート始める配置折りたたみディスプレイノードをクリ...

ServerSocketのデフォルトIPバインディングの実装プロセスの詳細な説明

開発中にサーバーを起動する必要がある場合、ローカルテストではポートを直接書き込み、実際の環境ではバイ...

Vue 学習 - VueRouter ルーティングの基礎

目次1. Vueルーター1. 説明2. 選択したルートのレンダリング: 3. 基本的な動作原理2. ...

ES6 クラス継承を使用してゴージャスなボール効果を実現する方法

目次導入実装手順キャンバス環境を作成するライティングボールBallクラスを継承するMoveBallク...

MySQLはデータ復旧を実装するためにbinlogログを使用する

MySQL binlog は MySQL ログの中で非常に重要なログであり、データベースのすべての ...

JavaScript を使用してハイパーリンクのリダイレクトを防ぐ方法 (複数の書き方)

JavaScript を使用すると、ハイパーリンクがジャンプするのを防ぐことができます。方法は次の...

Nginx+ModSecurity セキュリティモジュールの導入

目次1. ダウンロード2. 展開1.Nginxのデプロイメント2. ModSecurityの展開3....

複数レベルの複雑な動的ヘッダーの avue-crud 実装例

目次序文バックグラウンドデータの結合フロントエンドデータ表示ページ効果表示Avue.js は、既存の...

Mysql の読み取り/書き込み分離期限切れに対する一般的な解決策

MySQLの読み書き分離の落とし穴読み取りと書き込みの分離の主な目的は、メイン データベースの負荷を...

サーバーのDockerコンテナへのvscodeリモート接続を設定する方法

目次画像をプルするイメージを実行する(コンテナを生成する)コンテナを起動するコンテナに入るすべてのミ...