MySQLログシステムの使い方に関する簡単なチュートリアル

MySQLログシステムの使い方に関する簡単なチュートリアル

序文

MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース管理システムであり、Oracle の製品です。 MySQL は、最も人気のあるリレーショナル データベース管理システムの 1 つです。WEB アプリケーションに関して言えば、MySQL は最高の RDBMS (リレーショナル データベース管理システム) アプリケーション ソフトウェアの 1 つです。

どのデータベースにも、データベース管理者がデータベース内で発生したさまざまなイベントを追跡できるように、データベース作業のあらゆる側面を記録するさまざまなログが存在します。
MySQLには4つの異なるログがあります。

  • エラーログ
  • バイナリログ(BINLOG ログ)
  • クエリログ
  • スロークエリログ

これらのログには、データベースのさまざまな側面のトレースが記録されます。MySQL ログの使用方法を学ぶことは、データベースの使用と保守に非常に役立ちます。

1. エラーログ

エラー ログは、MySQL で最も重要なログの 1 つです。mysqld がいつ起動および停止したか、およびサーバーの動作中に重大なエラーが発生したかどうかに関する情報が記録されます。データベースに障害が発生し、正常に使用できない場合は、まずこのログを確認できます。
このログはデフォルトで有効になっています。デフォルトの保存ディレクトリは mysql データ ディレクトリ (var/lib/mysql) で、デフォルトのログ ファイル名は hostname.err (hostname はホスト名) です。

1. ログの場所を確認する

'log_error%' のような変数を表示します。

2. ログの内容を表示する

テール -f /var/lib/mysql/xxx.err 

2. バイナリログ

バイナリ ログ (BINLOG) には、すべての DDL (データ定義言語) ステートメントと DML (データ操作言語) ステートメントが記録されますが、データ クエリ ステートメントは記録されません。このログは、災害発生時のデータ復旧において非常に重要な役割を果たします。MySQL のマスター スレーブ レプリケーションは、このバイナリ ログを通じて実現されます。

1. バイナリログを有効にする

バイナリ ログはデフォルトでは有効になっていません。MySQL 構成ファイルで有効にして、MySQL ログの形式を構成する必要があります。

  • 設定ファイルの場所: /etc/my.cnf
  • ログの保存場所: 設定時にファイル名が指定されているがパスが指定されていない場合、ログはデフォルトで MySQL データ ディレクトリに書き込まれます。
#binlog ログを設定します。ログファイルのプレフィックスは mysqlbin です -----> 生成されるファイル名は次のようになります: mysqlbin.000001、mysqlbin.000002 
log_bin = mysqlbin
 
#バイナリログ形式を設定する binlog_format=STATEMENT

2. バイナリログ形式

(1)声明

このログ形式では、ログ ファイルに SQL ステートメントが記録されます。データを変更する各 SQL ステートメントがログ ファイルに記録されます。各ステートメントのテキストは、MySQL が提供する mysqlbinlog ツールを使用して明確に表示できます。マスタースレーブレプリケーション中、スレーブはログを元のテキストに解析し、スレーブ上で再実行します。

(2)行

このログ形式では、SQL ステートメントを記録する代わりに、ログ ファイルの各行のデータの変更が記録されます。たとえば、SQL ステートメント update tb_book set status='1' を実行すると、ログ形式が STATEMENT の場合は、SQL ファイルの 1 行がログに記録されます。ROW の場合は、テーブル全体が更新されるため、つまりレコードのすべての行が変更されるため、ROW 形式のログには各行のデータの変更が記録されます。

(3)混合

これは MySQL の現在のデフォルトのログ形式で、STATEMENT 形式と ROW 形式が混在しています。デフォルトでは、STATEMENT が使用されますが、特殊な場合には ROW が記録に使用されます。 MIXED 形式は、両方のモードの欠点を回避しながら、両方のモードの利点を最大限に活用できます。

3. ログの読み取り

ログはバイナリ形式で保存されており、直接読み取ることはできないため、表示するにはmysqlbinlogツールを使用する必要があります。構文は次のとおりです。

mysqlbinlog ログファイル;

4. STATEMENT形式のログを表示する

(1)挿入文を実行する

tb_book に値 (null、'Lucene'、'2088-05-01'、'0') を挿入します。

(2)mysqlデータファイルディレクトリ内のバイナリファイルを見つける

mysqlbin.index はログ ファイル名を記録するログ インデックス ファイルです。 mysql-bin.000001はログファイルです

(3)ログファイルを表示する


5. ROW形式のログを表示する

(1)設定ファイルで設定する

#binlog ログを設定します。ログファイルのプレフィックスは mysqlbin です -----> 生成されるファイル名は次のようになります: mysqlbin.000001、mysqlbin.000002 
ログビン=mysqlbin
 
#バイナリログ形式を設定する binlog_format=ROW

注意: 設定ファイルを変更するたびにMySQLサービスを再起動することを忘れないでください。

サービスmysqlの再起動

(2)データを挿入する

ログ形式が ROW の場合、データを直接理解することはできません。mysqlbinlog の後に -vv パラメータを追加できます。文字セットの影響を回避するには、--no-defaults パラメータを使用します。

6.

6. ログの削除

負荷の高いシステムでは、毎日大量のログが生成されます。これらのログが長期間消去されない場合、大量のディスク領域を占有することになります。ログを削除する一般的な方法は次のとおりです。

(1)方法1

Reset Master コマンドを使用して、すべての binlog ログを削除します。削除後、ログ番号は xxxx.000001 から再開されます。

削除する前に、ログ ファイルを照会します。

ログ削除コマンドを実行する

マスターをリセット

もう一度確認

最後に残った000001は空の設定ファイルです

(2)方法2

マスターログを 'mysqlbin.****** に消去します。

このコマンドは、 ******番号より前のすべてのログを削除します。

(3)方法3

'yyyy-mm-dd hh24:mi:ss' 以前のマスター ログを消去します

このコマンドはyyyy-mm-dd hh24:mi:ss

(4)方法4

パラメータexpire_logs_days=#を設定します。このパラメータは、ログの有効期限を設定することを意味します。指定された日数が経過すると、ログは自動的に削除されます。これにより、ログを管理する DBA の作業負荷が軽減されます。

3. クエリログ

クエリ ログにはクライアントのすべての操作ステートメントが記録されますが、バイナリ ログにはデータをクエリするための SQL ステートメントは含まれません。

デフォルトでは、クエリ ログは有効になっていません。クエリログを有効にする必要がある場合は、次の構成を設定できます。

#このオプションはクエリログを有効にするために使用されます。オプションの値: 0 または 1。0 はオフ、1 はオンを意味します。general_log=1
 
#ログファイル名を設定します。指定しない場合、デフォルトのファイル名はhost_name.logになります。 
general_log_file=ファイル名

1. クエリログを有効にする

2. 一連の操作を実行する

3. クエリログを表示する

4. スロークエリログ

スロー クエリ ログには、実行時間がパラメータ long_query_time の設定値を超え、スキャンされたレコード数が min_examined_row_limit 未満ではないすべての SQL ステートメントが記録されます。 long_query_time のデフォルト値は 10 秒、最小値は 0、精度はマイクロ秒単位です。

1. ファイルの場所と形式

スロークエリログはデフォルトで無効になっています。スロークエリログは2つのパラメータで制御できます

# このパラメータは、スロークエリログを有効にするかどうかを制御するために使用されます。可能な値は 1 と 0 です。1 は有効、0 は無効を意味します。slow_query_log=1 
 
# このパラメータは、スロークエリログのファイル名を指定するために使用されます slow_query_log_file=slow_query.log
 
# このオプションはクエリ時間制限を設定するために使用されます。クエリ時間がこの制限を超えると、遅いクエリとみなされ、ログ記録が必要になります。デフォルトは10秒です。 
長いクエリ時間=10 

一般的には 2 秒程度に設定すれば十分ですが、私の実験では遅いクエリを完了するために 0.5 秒に設定しました。

現在のlong_query_timeはMySQLクライアントで照会できます。

2. クエリ操作を実行する

(1)クエリを実行する前にスロークエリログを確認する

(2)より高速なクエリアクションを実行する

(3)スロークエリアクションを実行する

スロークエリログの内容が大量にある場合、ファイルを直接閲覧するのは面倒です。このとき、MySQL に付属している mysqldumpslow ツールを使用して、スロークエリログを分類して要約することができます。

ここではスロークエリレコードが1つしかないため、mysqldumpslowの効果は反映されていないが、スロークエリレコードが多数ある場合は分類してまとめることができる。

要約する

これで、MySQL ログ システムの簡単な使用方法のチュートリアルに関するこの記事は終了です。MySQL ログ システムに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 5.7 のスロークエリログの時間がシステム時間より 8 時間遅れている理由の詳細な説明
  • Laravel フレームワークは monolog_mysql を使用してシステム ログ情報を mysql データベースに保存します。
  • MySQLログシステムの詳細情報共有
  • MySQL ログファイルはどこにありますか? MySQL ログファイルの場所を変更する方法
  • MySQLはトレースログを表示して実行されたSQL文を追跡します。
  • MySQLエラーログを表示する方法
  • MySQL ログの設定と表示方法
  • MySQL Innodb テーブルによって発生するデッドロック ログの分析と概要
  • mysql binlog ログを正しくクリーンアップする 2 つの方法
  • Ubuntu で MySQL を起動、停止、再起動し、エラー ログを表示するコマンド

<<:  はじめに: HTML の基本的なタグと属性の簡単な紹介

>>:  vue-cli の紹介とインストール

推薦する

echarts ワードクラウドチャートを使用した Vue の実践記録

echartsワードクラウドはechartsの拡張版ですhttps://echarts.apache...

Linux システムでの Selenium クローラー プログラムの導入の概要

目次序文1. セレンとは何ですか? 2. 使用手順1. ライブラリをインポートする2. テストコード...

VUEユニアプリ開発環境についての簡単な説明

目次1. HBuilderXビジュアルインターフェースを通じて2. vue-cliコマンドで実行する...

RHCEはApacheをインストールし、ブラウザでIPにアクセスします

1. at は、5 時間後にルート ディレクトリの at_test ファイルに「これは at タスク...

Linuxフラッシュのインストール方法

Linuxにフラッシュをインストールする方法1. Flashの公式サイトにアクセスし、ダウンロードを...

jsはシンプルなカウントダウンを実装します

この記事の例では、参考までに簡単なカウントダウンを実装するためのjsの具体的なコードを共有しています...

Vue+elementを使用してページ上部のタグを実装する方法の詳細な説明

目次1. ページレンダリング2. タグを切り替える3. タグを削除するこのようなタグはどのように記述...

フロントエンド開発者のための HTML 入門

1 HTML入門1.1 初めてのコード体験、最初のウェブページの作成XML/HTML コードコンテン...

バックエンドの権限に基づいてナビゲーション メニューを動的に生成する Vue-router のサンプル コード

目次js の1. グローバルガードを登録する2. Vuex 状態管理グローバルキャッシュルート3. ...

win10環境でDockerをインストールする実装

1. Docker公式サイトにアクセスするまず、Dockerの公式ウェブサイトにアクセスして、最新の...

CSS 位置プロパティが絶対の場合のパーセンテージ値の計算

位置が絶対の場合、関連する属性のパーセンテージは、参照先の要素 (包含ブロック) を基準として計算さ...

MySQLインデックスを正しく作成する方法

インデックス作成は大学図書館の書誌インデックスの構築に似ており、データ検索の効率を向上させ、データベ...

HTML テーブル データを Json 形式に変換するサンプル コード

<table>テーブルデータをJSON形式に変換するJavaScript関数は次のとおり...

VMwareがLinuxシステムをインストールして起動した後に黒い画面が表示される問題を解決する

1. 設置環境1. HUAWEI mate x CPU i5 82500u、8g メモリ、独立グラフ...

Centos8 で yum を使用して mongodb 4.2 をインストールする方法

1. リポジトリファイルを作成するmongodb の公式インストール ドキュメントを参照し、次のスク...