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開発

開発の問題点開発プロセスでは、データベース フィールドが頻繁に変更されるため、RD 環境と QA 環...

Linux での scp および sftp コマンドの詳細な説明

目次序文1. SCPの使用法2. sftpを使用する3. scp と sftp の違いは何ですか?ど...

Node.js で Bash スクリプトを書くための究極のソリューション

目次序文zxライブラリ$`コマンド` CD()フェッチ()質問()寝る()スローしない()チョークフ...

HTML の空リンク href="#" と href="javascript:void(0)" の違い

# には位置情報が含まれます。デフォルトのアンカーは #top で、これは Web ページの上部です...

MySQL 8.0.12 インストール設定方法とパスワード変更

この記事ではMySQL 8.0.12のインストールと設定方法を参考までに記録します。具体的な内容は以...

MySQL ユーザー変数と set ステートメントの例の詳細な説明

目次1 ユーザー変数の概要2 ユーザー変数の定義3 ユーザー変数の使用3.1 セットを通した例3.2...

Linux ログ表示方法 6 つのまとめ

バックエンド プログラマーは、さまざまな場所で Linux を扱います。Linux ログの読み方がわ...

Ubuntu 16.04.4LTS に mininet をインストールする際に発生する問題と解決策

ミニネットMininet は軽量のソフトウェア定義ネットワークおよびテスト プラットフォームです。軽...

MySQL カーソルの概念と使用法の詳細な説明

この記事では、例を使用して MySQL カーソルの概念と使用方法を説明します。ご参考までに、詳細は以...

HTML ハイパーリンクの詳細な説明

ハイパーリンクハイパーリンクは、Web サイト上のすべてのページがハイパーリンクで接続され、ページ間...

JavaScript はパスワードボックスの入力検証を実装します

サーバーの負荷を軽減するために、ユーザーが入力するときにフロントエンドページで簡単な検証を実行する必...

Dockerコンテナでユーザーを分離する方法

前回の記事「Docker コンテナの UID と GID を理解する」では、Docker コンテナ内...

ウェブサイト制作におけるオンライン広告の新しいインタラクティブ体験(グラフィックチュートリアル)

インターネット時代が成熟するにつれて、オンライン広告の発展も加速しています。圧倒的な広告収入と完璧な...

ウェブページのテキストデザインは、服を着た賢い女の子のようであるべきだ

<br />「この世に醜い女性はいない、あるのは怠惰な女性だけだ」これは女性の美のバイブ...

nginx ロードバランシングを介して https にリダイレクトする方法

ウェブ上で証明書とキーをコピーするscp -rp -P52113 /application/ngin...