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 を使って本のページめくり効果を実現するサンプルコード

推薦する

VUE ユニアプリカスタムコンポーネントについての簡単な説明

1. 親コンポーネントはpropsを通じて子コンポーネントにデータを渡すことができる2. 子コンポー...

CentOS に Memcached と PHP Memcached 拡張機能をインストールする

高性能分散メモリオブジェクトキャッシュシステムMemcachedについては、別の記事「Windows...

MySQL サービスに iptables ファイアウォール ポリシーを追加するためのソリューション

MySQL データベースが Centos7 システムにインストールされており、オペレーティング シス...

MySQLの水平および垂直テーブルパーティションの説明

前回の記事で、MySQL ステートメントの最適化には限界があると述べました。MySQL ステートメン...

JS ES6 非同期ソリューション

目次最初にコールバック関数を使用するes6 非同期処理モデルこの非同期モデルに合わせたAPI: pr...

nginx でクロスドメイン障害修復を構成する方法の例

Nginxのクロスドメイン設定は次のようには機能しません サーバー{ 聞く 80; server_n...

エンコードが utf-8 に設定されている場合に Web ページが文字化けする問題の解決策

最近、PHP で Web ページを書いているときに、エンコードを UTF-8 に設定しました。しかし...

MySQL インフラストラクチャ チュートリアル: クエリ ステートメント実行プロセスの詳細な説明

序文私は以前から、SQL 文がどのように実行され、どのような順序で実行されるのかを知りたいと思ってい...

MySQL8 ベースの docker-compose デプロイメント プロジェクトの実装

1. まず、次のパスに従って対応するフォルダを作成します。 ローカルのdockerでmysqlを実行...

HTML ファイルにファイルの内容を含める方法の概要

フォーラムでは、ネットユーザーから「HTML ファイル内の別の HTML ファイルの内容を読み取るこ...

ネイティブ js カスタム右クリック メニュー

この記事の例では、参考のためにjsカスタム右クリックメニューの具体的なコードを共有しています。具体的...

Vue Element UI カスタム説明リストコンポーネント

この記事の例では、Vue Element UIカスタム説明リストコンポーネントの具体的なコードを参考...

AWS無料サーバーアプリケーションとネットワークプロキシ設定チュートリアルの詳細な説明

目次予防必要条件AWSアカウントを申請する仮想マシンの申請と有効化仮想マシンを申請するセキュリティグ...

要素の$notifyポイントについての簡単な説明

当初の意図は、element-ui の $notify 通知をコンポーネントにカプセル化することでし...

docker インストール後に hello-world を実行する問題を解決する

yumを使用してcentos7.3にDocker V1.13.1をインストールしましたしかし、doc...