MySQL の general_log ログの知識ポイントの紹介

MySQL の general_log ログの知識ポイントの紹介

以下の操作デモンストレーションはすべて MySQL バージョン 5.6.36 に基づいています。

仕事でよくこの問題に遭遇します。MySQL データ アクセスは大量のエネルギーを消費するため、SQL の観点から最適化したいと考えています。 R&D 担当者は、どの SQL ステートメントが最も頻繁に実行されているかを確認できるかどうかをよく尋ねます。回答: いいえ、現在実行中の SQL とスロー ログに記録されている SQL のみを表示できます。パフォーマンス上の理由から、一般的なログは通常は有効になっていません。スロー ログではパフォーマンスの問題がある一部の SQL ステートメントを見つけることができますが、一般ログではすべての SQL ステートメントが記録されます。ただし、実稼働中の MySQL ではパフォーマンスの問題が発生することがあります。一般ログを短時間オンにして SQL 実行ステータスを取得することは、MySQL のパフォーマンスの問題のトラブルシューティングと分析に非常に役立ちます。または、プログラムがどの SQL ステートメントを実行したかは不明ですが、エラーのトラブルシューティングを行う必要がある場合もあります。原因が見つからない場合は、一時的に一般ログを有効にすることができます。

MySQL 5.0 では、スロー ログまたは一般ログを有効にするには、システムを再起動する必要があります。MySQL 5.1.6 以降では、一般クエリ ログとスロー クエリ ログがファイルまたはデータベース テーブルへの書き込みをサポートするようになりました。さらに、ログの有効化と出力モードの変更は、グローバル レベルで動的に変更できます。

一般ログを開く方法は多数あります。

以下は簡単な紹介とデモンストレーションです。

方法1: my.cnf設定ファイルを変更する

[root@git-server ~]# grep general_log /etc/my.cnf
一般ログ = 1
一般ログファイル = /tmp/general.log

mysql を再起動します。この操作は永続的な効果と同等です。もちろん、この方法は本番環境で使用することはできません。 MySQL を再起動すると MySQL サービスが中断されるためです。同時に、general.log は MySQL に関するすべての DDL および DML ステートメントを記録します。これは大量のリソースを消費します。通常、MySQL の問題のトラブルシューティングを支援するために、数分間一時的に開かれます。その後は閉店となります。

方法2: MySQLコマンドコンソールでの操作

このファイルにアクセスする権限を持つのはルートユーザーのみです

デフォルトではこのログはオフになっています。

mysql> '%general%' のようなグローバル変数を表示します。
+------------------+---------------------------------+
| 変数名 | 値 |
+------------------+---------------------------------+
| 一般ログ | オフ |
| 一般的なログファイル | /data/mysql/data/git-server.log |
+------------------+---------------------------------+
セット内の 2 行 (0.00 秒)

マイSQL>

場合によっては、MySQL のグローバル general_log を一時的に有効にする必要があります。MySQL にログインし、ログ パスを直接設定して general_log を有効にすることができます。

mysql> グローバル general_log_file を '/tmp/general_log' に設定します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql> グローバル general_log をオンに設定します。
クエリは正常、影響を受けた行は 0 行 (0.02 秒)

mysql> '%general%' のようなグローバル変数を表示します。
+------------------+------------------+
| 変数名 | 値 |
+------------------+------------------+
| general_log | オン |
| 一般ログファイル | /tmp/general_log |
+------------------+------------------+
セット内の 2 行 (0.00 秒)

マイSQL> 

[root@git-server ~]# tailf /tmp/general_log
180717 22:55:51 2 クエリ表示データベース
180717 22:56:04 2 クエリ SELECT DATABASE()
      2 初期化DBテスト
180717 22:56:14 2 クエリ選択 * from student3

使用後は、直接グローバルgeneral_log=offに設定してこのログを閉じることができます。

方法3: MySQLデータベースのgeneral_logテーブルにログを保存する

mysql> グローバル log_output='table' を設定します。
mysql> グローバル general_log をオンに設定します。
mysql> mysql を使用します。
mysql> test.student3 から * を選択します。
+----+--------------+------------+--------+------+
| id | 教師名 | 教師id | 名前 | 性別 |
+----+--------------+------------+--------+------+
| 1 | 華華| 1 | サナン| 女性|
| 4 | サンサン| 2 | サナン| 女性|
| 6 | ビビ | 3 | サナン | 女性 |
+----+--------------+------------+--------+------+
セット内の 3 行 (0.00 秒)

mysql> general_log から * を選択します。
| 2018-07-17 23:00:12 | root[root]@localhost [] | 2 | 1132333306 | クエリ | test.student3 から * を選択

/tmp/general.log の情報を確認すると、どの SQL クエリ/更新/削除/挿入がより頻繁に行われているかを大まかに把握できます。たとえば、一部のテーブルは頻繁に変更されないものの、クエリ量が多いため、キャッシュできます。プライマリ データベースとスタンバイ データベース間の待機時間が長くならないテーブルの場合、読み取りをスタンバイ データベースに配置できます。

以上が今回ご紹介したgeneral_logログに関する豆知識です。123WORDPRESS.COMをご愛読、応援いただきありがとうございました。

以下もご興味があるかもしれません:
  • MySQL オンラインリカバリ UNDO テーブルスペース 実戦記録
  • MySQL の redo デッドロック問題のトラブルシューティングと解決プロセス分析
  • MYSQL SERVER のログファイルを縮小する方法
  • MySQL の一般的なログの概要
  • MySQL ログトリガー実装コード
  • MySQL 5.7 のスロークエリログの時間がシステム時間より 8 時間遅れている理由の詳細な説明
  • mysql bin-log ログファイルを sql ファイルに変換する方法
  • MySQLデータベースのbinlogクリーンアップコマンドの詳細な説明
  • MySQLのREDOログ(リドゥログ)とロールバックログ(アンドゥログ)の詳しい説明

<<:  Vue プラグイン エラー: このページで Vue.js が検出されました。問題は解決しました

>>:  Centos8 (最小インストール) Python3.8+pip のインストール方法に関するチュートリアル

推薦する

実行中の時計を実装するための純粋な CSS3 コード

操作効果コードの実装html <div id="ウォッチ"> <...

Vue+Element+Springboot画像アップロードの実装例

最近、たまたま vue+springboot のフロントエンドとバックエンドの分離プロジェクトに触れ...

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

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

Tencent Cloud Server Centosにデータディスクをマウントする方法

まず、ハードディスクデバイスにデータディスクがあるかどうかを確認します # まずfdisk -lを実...

Raspberry Pi 3B+ に 64 ビット Ubuntu システムと Docker ツールをインストールする詳細な手順

Raspberry Pi 3B に 64 ビット アプリケーション (64 ビット JDK など) ...

CentOS 6.x のインストール時に発生するエラー「ディスク sda に BIOS RAID メタデータが含まれています」の解決方法

今日、CentOS6.2 をインストールしていたところ、ハード ドライブの検出段階を通過できませんで...

MySQL Limitパフォーマンス最適化とページングデータパフォーマンス最適化の詳細な説明

MySQL Limit はセグメント内のデータベース データをクエリでき、主にページングで使用されま...

MySQL の選択、挿入、更新バッチ操作ステートメントのコード例

プロジェクトでは、データを操作するためにバッチ操作ステートメントが必要になることがよくあります。バッ...

ブートストラップ学習体験のまとめ - CSS スタイル デザイン共有

プロジェクトのニーズにより、ブートストラップ フレームワークを慎重に学習する予定です。以前から少しは...

CSS における px、rem、em、vh、vw の違いを簡単に分析します

絶対長さピクセルpx はピクセル値であり、メートルやセンチメートルのような固定の長さです。相対的な長...

選択ドロップダウンボックスの値をIDに渡してコードを実装する方法

完全なコードは次のとおりです。 HTMLコード:コードをコピーコードは次のとおりです。 <!-...

Nginx サーバーの https 設定方法の例

Linux: Linux バージョン 3.10.0-123.9.3.el7.x86_64 ngin...

Linux での Python スクリプトの自動起動とスケジュール起動の詳細な手順

1. Pythonは起動時に自動的に実行されますPython の自己起動スクリプトがauto.pyで...

Vue は無限ロードウォーターフォールフローを実装します

この記事では、参考までに、無限ロードウォーターフォールフローを実現するためのVueの具体的なコードを...

Vueがビデオアップロード機能を実装

この記事では、参考までに、ビデオアップロード機能を実現するためのVueの具体的なコードを紹介します。...