MySQL の重要なログファイルの包括的なインベントリ

MySQL の重要なログファイルの包括的なインベントリ

導入

この記事では、MySQL のログについて、あまり深く掘り下げずに簡単にまとめ、紹介します。主な目的は、MySQL のログ ファイルを体系的に理解することです。

ログ分類

MySQL のログ ファイルには、構成ファイル、エラー ログ ファイル、バイナリ ファイル (バイナリ ログ)、スロー クエリ ログ (スロー クエリ ログ)、ジェネラ ログ (ジェネラ ログ)、監査ログ (監査ログ)、データベース ファイルとデータ テーブル ファイル、ストレージ エンジン ファイル、リレー ログ (リレー ログ)、プロセス ファイル (PID)、ソケット ファイルが含まれます。

スニペースト_2021-04-20_16-55-53

パラメータファイル

パラメータ ファイルは、MySQL では構成ファイル、Linux では my.cnf ファイル、Windows では my.ini ファイルです。ファイルの内容は、主にサーバーとクライアントの 2 つのモジュールに分かれています。サーバー モジュールは、スロー クエリ ログなどの MySQL サービス情報を構成します。クライアント モジュールは、クライアント接続のポート番号などの MySQL クライアント接続情報を構成します。
ファイル形式はおおよそ次のようになります。

[クライアント]
ポート = 3306
デフォルトの文字セット = utf8mb4

[mysqld]
ユーザー = mysql
ポート = 3306
sql_mode = ""
デフォルトのストレージエンジン = InnoDB
デフォルト認証プラグイン = mysql_native_password
文字セットサーバー = utf8mb4
照合サーバー = utf8mb4_unicode_ci
init_connect = '名前をutf8mb4に設定'
遅いクエリログ
長いクエリ時間 = 3
スロークエリログファイル = /var/lib/mysql/mysql.slow.log
ログエラー = /var/lib/mysql/mysql.error.log
デフォルトのタイムゾーン = '+8:00'

エラーログファイル

エラー ログ ファイルには、MySQL の起動、操作、シャットダウンからのログ情報が記録されます。たとえば、MySQL への接続失敗、クエリ コマンド エラー、SQL 実行プロセスなどです。 MySQL エラーを見つけるのに非常に役立ちます。
ファイルの一般的な内容は次のとおりです。

バージョン: '5.7.28-log' ソケット: '/var/run/mysqld/mysqld.sock' ポート: 3306 MySQL コミュニティ サーバー (GPL)
2021-04-17T21:23:00.865868Z 3 [注記] db: 'exam_wechat' ユーザー: 'root' ホスト: '172.18.0.1' への接続 3 が中止されました (通信パケットの読み取り中にタイムアウトが発生しました)
2021-04-17T21:23:00.865969Z 2 [注記] db: 'exam_wechat' ユーザー: 'root' ホスト: '172.18.0.1' への接続 2 を中止しました (通信パケットの読み取り中にタイムアウトが発生しました)
2021-04-19T22:33:24.137143Z 0 [注記] InnoDB: page_cleaner: 1000ms の意図したループに 18415ms かかりました。設定が最適ではない可能性があります。(その間、flushed=0 および evicted=0)
2021-04-20T07:03:21.765208Z 79 [注記] ユーザー 'root'@'172.18.0.1' のアクセスが拒否されました (パスワード使用: NO)
2021-04-20T07:03:23.825044Z 81 [注記] db への接続 81 が中止されました: 'unconnected' ユーザー: 'root' ホスト: '172.18.0.1' (通信パケットの読み取り中にエラーが発生しました)
2021-04-20T07:14:25.033983Z 82 [注記] ユーザー 'root'@'172.18.0.1' のアクセスが拒否されました (パスワード使用: NO)
2021-04-20T07:14:27.442608Z 84 [注記] db への接続 84 が中止されました: 'unconnected' ユーザー: 'root' ホスト: '172.18.0.1' (通信パケットの読み取り中にエラーが発生しました)
2021-04-20T07:27:13.971644Z 83 [注記] db: 'unconnected'、ユーザー: 'root'、ホスト: '172.18.0.1' への接続 83 が中止されました (通信パケットの読み取り中にタイムアウトが発生しました)
2021-04-20T07:41:02.916249Z 85 [注記] db: 'unconnected'、ユーザー: 'root'、ホスト: '172.18.0.1' への接続 85 が中止されました (通信パケットの読み取り中にタイムアウトが発生しました)

エラーログを開始する方法。 MySQL の設定ファイルでインテント log_error を設定するだけです。

mysql [email protected]:(none)> '%log_error%' のような変数を表示します。
+---------------------+--------------------------------+
| 変数名 | 値 |
+---------------------+--------------------------------+
| binlog_error_action | ABORT_SERVER |
| log_error | /var/lib/mysql/mysql.error.log |
| ログエラーの詳細度 | 3 |
+---------------------+--------------------------------+
3行セット
時間: 0.010秒

完全なログファイル

完全なログ ファイルには、MySQL のすべての SQL 操作ログが記録されます。例えば、追加、削除、変更、確認などの操作が記録されます。

mmysql [email protected]:(none)> '%general%' のような変数を表示します。
再接続しています...
+------------------+---------------------------------+
| 変数名 | 値 |
+------------------+---------------------------------+
| 一般ログ | オフ |
| 一般的なログファイル | /var/lib/mysql/7fdc5f723ff9.log |
+------------------+---------------------------------+

構成項目には、table、none、file の 3 つの値があります。ファイルを設定すると、データはログ ファイルに記録されます。何も設定しないと、データは記録されません。テーブルを設定すると、データを記録するためのテーブル (general-log と呼ばれます) がデフォルトの MySQL データベースに作成されます。

有効にすることはお勧めしません。ログ ファイルが多すぎると、パフォーマンスが低下するだけでなく、無効なスペースも大量に占有されます。

# ログ ファイル形式mysqld、バージョン: 5.7.28-log (MySQL Community Server (GPL))。開始時:
TCP ポート: 3306 Unix ソケット: /var/run/mysqld/mysqld.sock
時間IDコマンド引数
2021-04-20T09:16:48.572888Z 88 TCP/IPを使用して[email protected]に接続
2021-04-20T09:16:48.574591Z 88 接続 ユーザー 'root'@'172.18.0.1' のアクセスが拒否されました (パスワード使用: NO)
2021-04-20T09:16:50.325379Z 89 TCP/IPを使用して[email protected]に接続
2021-04-20T09:16:50.329894Z 89 クエリ select connection_id()
2021-04-20T09:16:50.335222Z 89 クエリ SELECT @@VERSION
2021-04-20T09:16:50.339432Z 90 TCP/IPを使用して[email protected]に接続
2021-04-20T09:16:50.339621Z 89 クエリ SELECT @@VERSION_COMMENT
2021-04-20T09:16:50.343525Z 90 クエリ select connection_id()
2021-04-20T09:16:50.347115Z 90 クエリ SHOW DATABASES
2021-04-20T09:16:50.380236Z 90 クエリはinformation_schema.columnsからTABLE_NAME、COLUMN_NAMEを選択します
                                    table_schema = 'なし'の場合
                                    テーブル名、序数位置で並べ替え
2021-04-20T09:16:50.391019Z 90 クエリ SELECT CONCAT("'", user, "'@'", host,"'") FROM mysql.user
2021-04-20T09:16:50.415062Z 90 クエリ SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES
    ROUTINE_TYPE="FUNCTION" かつ ROUTINE_SCHEMA = "None" の場合
2021-04-20T09:16:50.432015Z 90 クエリ SELECT name from mysql.help_topic WHERE name like "SHOW %"
2021-04-20T09:16:52.572608Z 89 クエリは '%general%' のような変数を表示します
2021-04-20T09:17:13.532046Z 89 クエリは '%general%' のような変数を表示します

スロークエリログ

スロークエリログは、SQL クエリの速度を記録するログファイルです。 SQL ステートメントのクエリ時間が固定しきい値を超えると、この SQL ステートメントはスロー クエリ SQL ステートメントとして定義され、スロー クエリ ログ ファイルに記録されます。

スロークエリの設定には、主に次の 3 つのパラメータが含まれます。

スロー クエリとスロー クエリ ログ ファイルを有効にするかどうか。

mysql [email protected]:(none)> '%slow%' のような変数を表示します。
+---------------------------+-------------------------------+
| 変数名 | 値 |
+---------------------------+-------------------------------+
| slow_query_log | オン |
| slow_query_log_file | /var/lib/mysql/mysql.slow.log |
+---------------------------+-------------------------------+
5行セット
時間: 0.014秒

遅いクエリ時間のしきい値。

mysql [email protected]:(none)> '%long_query_time%' のような変数を表示します。
+-----------------+----------+
| 変数名 | 値 |
+-----------------+----------+
| 長いクエリ時間 | 3.000000 |
+-----------------+----------+
セット内の1行
時間: 0.013

バイナリログファイル

バイナリ ログ ファイルは、MySQL DML ステートメントを記録するために使用されます。操作後の物理的なログ コンテンツが記録されますが、MySQL の select、show などのステートメントは記録されません。バイナリ ログ ファイルの主な機能は次のとおりです。

マスタースレーブレプリケーションの場合、マスターサーバーはバイナリファイル内の物理ログをスレーブサーバーに送信し、スレーブサーバーはログを自身に書き込みます。

データ復旧に使用されます。物理ログに基づいて、データ損失前の操作ログを取得します。

次のパラメータを使用して設定できます。

mysql [email protected]:(none)> '%log_bin%' のような変数を表示します。
再接続しています...
+---------------------------------+--------------------------------+
| 変数名 | 値 |
+---------------------------------+--------------------------------+
| log_bin | オン |
| log_bin_basename | /var/lib/mysql/mysql-bin |
| log_bin_index | /var/lib/mysql/mysql-bin.index |
+---------------------------------+--------------------------------+
6行セット
時間: 0.015秒

log_bin はバイナリ ログ ファイルを開くかどうかを示し、log_bin_basename は保存されているディレクトリとログ ファイルのプレフィックスを示し、log_bin_index はログ ファイルのインデックス (ログ ファイル名) を示します。ログ ファイルにファイル名が指定されていない場合は、デフォルトでローカル名が使用されます。

ログ ファイルのリスト。

-rw-r----- 1 mysql ルート 154 4月 12日 09:31 mysql-bin.000041
-rw-r----- 1 mysql ルート 154 4月12日 19:45 mysql-bin.000042
-rw-r----- 1 mysql ルート 1459325 4月17日 20:26 mysql-bin.000043
-rw-r----- 1 mysql mysql 24576 4月17日 22:18 mysql-bin.000044
# cat mysql-bin.index
./mysql-bin.000001
./mysql-bin.000002
./mysql-bin.000003
./mysql-bin.000004
./mysql-bin.000005
./mysql-bin.000006

監査ログ

監査ログは、MySQL ネットワーク アクティビティを記録し、MySQL 操作レコードの統計、分析、レポートを実行するために使用されます。 MySQL セキュリティ監視情報を記録するログ ファイル。

MySQL自体にはこの機能は含まれておらず、MySQL公式サイトでもこの機能は有料となっています。ここでは具体的なデモンストレーションは示されません。

リレーログ

リレー ログは、スレーブ サーバー上の MySQL マスター スレーブ レプリケーションにおいて重要な役割を果たします。マスター サーバーがバイナリ ファイルをスレーブ サーバーに送信すると、スレーブ サーバーはそれをすぐに実行せず、指定された種類のログ ファイルに書き込みます。次に、スレーブ サーバーは SQL スレッドを開始してリレー ログ ファイルの内容を読み取り、それを自身のデータに書き込みます。

スニペースト_2021-04-20_17-39-50

PID ファイル

PID は MySQL インスタンスのプロセス ID です。 MySQL は単一プロセスのサービスです。MySQL インスタンスを起動すると、PID ファイルが作成されます。

ソケットファイル

ソケットも MySQL 通信の手段です。 MySQL 通信には TCP と Socket の 2 つの方法があります。 TCP はネットワーク通信を使用し、アクセス可能な任意のサーバーにサービスを展開できます。ソケットはファイル通信方式であり、同じサーバー上にある必要があります。

# TCP モード mysql -hxxxx -pxxxx -uxxxx -Pxxx
mysql -uxxxx -pxxxx -s /path/socket

データベースとテーブル

データベースとテーブルの値は、MySQL のテーブル構造ファイル、データ ファイル、インデックス ファイルです。
InnoDB ストレージ エンジン データ テーブル構造

-rw-r----- 1 mysql ルート 13650 4月13日 09:46 wechat_user.frm
-rw-r----- 1 mysql mysql 98304 4月17日 13:43 wechat_user.ibd

MyISAM ストレージ エンジン データ テーブル構造

-rw-r----- 1 mysql mysql 0 4月20日 17:53 users.MYD
-rw-r----- 1 mysql mysql 1024 4月 20 17:53 users.MYI
-rw-r----- 1 ルート ルート 8586 4月 20 17:53 users.frm

ストレージエンジンファイル

ストレージ エンジンによって実装が異なります。 InnoDB ストレージ エンジンは、redolog と undolog の 2 種類のログ ファイルに分かれています。

これで、MySQL の重要なログ ファイルの包括的なインベントリに関するこの記事は終了です。MySQL ログ ファイルに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL ログファイルの詳細
  • MySQL ログファイルとログタイプの紹介
  • mysql バイナリ ログ ファイル データベースの復元
  • MySQL ログファイルはどこにありますか? MySQL ログファイルの場所を変更する方法

<<:  Linux システム修復モード (シングル ユーザー モード)

>>:  CSS3 を使って本のページめくり効果を実現するサンプルコード

推薦する

MySQL レプリケーション テーブルの詳細とサンプル コード

MySQL レプリケーション テーブルの詳細な説明テーブル構造、インデックス、デフォルト値などを含む...

17 個の JavaScript ワンライナー

目次1. DOMとBOM関連1. 要素にフォーカスがあるかどうかを確認する2. 要素の兄弟ノードをす...

MySQLで関連テーブルを削除する実用的な方法

MySQL データベースでは、テーブルが互いに関連付けられた後は、それらを任意に削除することはできま...

Tomcat 例外の解決方法 (リクエスト ターゲットに無効な文字が見つかりました。有効な文字は RFC 7230 および RFC 3986 で定義されています)

1. シナリオ表示Tomcat ログに次の例外情報が時々報告されます。何が起こっているのでしょうか...

Vue の計算プロパティの詳細な説明

目次補間式方法計算された要約する今日は、Vue の計算プロパティについてお話ししましょう。計算プロパ...

ウェブページからテキスト透かしを削除する2つの簡単な方法

<br /> 特定の Web サイトを閲覧して、優れた Web ページを見つけた場合、そ...

Nginx/Httpd リバース プロキシ Tomcat 設定チュートリアル

以前のブログでは、Tomcatのサーバーの各コンポーネントの使用について学びました。 Tomcatは...

SQL 結合クエリの内部結合、外部結合、クロス結合の違いの詳細な説明

データベースを使用するアプリケーションを開発する場合、必然的にユニオンクエリを使用する必要があります...

Nodeはkoa2を使用してシンプルなJWT認証方式を実装します

JWT の紹介JWTとは正式名称はJSON Web Tokenで、現在最も人気のあるクロスドメイン認...

ショッピングカートのスライド削除効果を実装するReactネイティブサンプルコード

基本的にすべてのeコマースプロジェクトにはショッピングカートの機能があります。これはreact-na...

Dockerスペースがいっぱいでコンテナに入れない場合の解決策

トラブル発生が突然で、業務も迫っていたため、現場のスクリーンショットを撮る時間がありませんでしたので...

mysqlタイムスタンプの使用

序文:タイムスタンプ フィールドは、MySQL でよく使用されます。たとえば、データ行が作成または変...

MySQLインデックスとは何ですか?わからない場合は聞いてください

目次概要二分木からB+木へクラスター化インデックス非クラスター化インデックスジョイントインデックスと...

柔軟で安定した高品質の HTML および CSS コード標準を作成するためのガイド

黄金律常に同じコーディング標準セットに従ってください。同じプロジェクトに何人の人が関わっているかに関...

MySQL 5.7.18 リリース インストール ガイド (bin ファイル バージョンを含む)

インストール プロセスは、コンパイル手順を除いて、基本的にソース バージョンと同じです。この記事では...