ログは貴重です。クライアントに重要なデータへのアクセスを提供するバックエンドのリソースによって生成されるログは、単に価値があるだけではありません。ログがどこにあるかを知り、その情報を管理・理解できるかどうかで、スムーズで安全な操作ができるかどうか、パフォーマンスが低下するかどうか、あるいはアプリケーションの致命的な障害が発生するかどうかが決まります。 MySQL サーバは基本的なログを生成します。ここでは、どのログが重要なのか、なぜ重要なのか、どこにあるのか、そしてログを最大限に活用するために何ができるのかを見ていきます。 MySQLのログ 日々のIT運用において最も重要な3つのログは、エラーログ、低速なクエリのログ、(程度は低いですが)一般的なクエリのログです。これらのログのデフォルトフォーマットはテキストで、機能的な問題やセキュリティの問題の検出や診断、パフォーマンスの向上、サーバ操作やサーバへのアクセス履歴を追跡するのに役立ちます。 バイナリログ、リレーログ、DDLログはすべてバイナリ形式で、主にMySQL自身が使用するように設計されており、特にサーバのレプリケーションやデータリカバリなどのタスク用に設計されています。 どこで、どのように まず、様々なMySQLディストリビューションがどのように、どのような状況下でデフォルトのログファイルの場所を設定しているのかを簡単に見てみましょう。 MySQLディストリビューションには、基本的に3つのタイプがあります。Windows、特定のプラットフォーム固有のUNIX/Linux、一般的なUNIX/Linuxです。一般的に、プラットフォーム固有のディストリビューションでは、ログの配置と有効化のためのデフォルト設定がありますが、一般的なUNIX/Linuxディストリビューションでは、手動設定でログを管理することを前提としています。 Windows 公式の MySQL Windows ディストリビューションでは、インストールの各段階でユーザーが選択可能なオプションを備えた MSI インストーラを使用しています。ロギングオプションのページでは、ログの有効化と場所のデフォルトが表示され、必要に応じて調整を行うことができます。 エラー、低速クエリ、バイナリログは、デフォルトで有効になっていますが、一般的なクエリログは有効になっていません。各ログのデフォルトの場所は、MySQL Data ディレクトリ(C:¥ProgramData¥MySQL Server [バージョン]¥Data)で、デフォルトのログ名はコンピュータのデバイス名に基づいています。 一般的なクエリ、低速クエリ、バイナリログはインストーラの GUI を通じて手動で有効/無効にできますが、エラーログはできません。また、各ログの名前とパスを手動で設定することもできます。 インストール後、ログの設定はユーザーが編集可能な C:¥ProgramData¥MySQL¥MySQL Server [バージョン]¥my.ini で管理されます。このファイルでログ名やパス、有効/無効を設定できます。 プラットフォーム固有のUNIX/Linux 特定の UNIX/Linux プラットフォーム用の公式ディストリビューションは、一般的にスクリプトでインストールされ、対話的な設定はほとんど、あるいは全く行われません。いくつかのインストールパッケージ(Yum や APT を含む)は、エラーログを /var/log/ や /var/log/mysql/ に error.log や mysqld.log のような名前で作成します。データディレクトリは通常 /var/lib/mysql/ またはそれに類似したものになり、代わりのパスがなくてもログのデフォルトの保存先として有効に機能します。 ログの設定は /etc/mysql/my.cnf のようなユーザーが編集可能な設定ファイルで管理します。これらの設定には、ログ名やパス、スイッチの有効化/無効化などが含まれます。起動とシャットダウンは通常 mysqld_safe(あるいは一部のディストリビューションでは systemd)によって管理されており、ログ設定オプションを見つけて適用します。 一般的な UNIX/Linux 一般的なインストールは、主に手動で行います。インストールプロセス中に、コマンドライン、スクリプトの実行、または適切な設定ファイルの編集により、ログの有効化と設定を行うことができます。MySQL オンラインリファレンスマニュアル(https://dev.mysql.com/doc/refman/5.7/en/server-logs.html)で、これらのオプションについて詳しく説明しています。 【訳注】MyQL5.6日本語リファレンスマニュアルは、https://dev.mysql.com/doc/refman/5.6/ja/ にあります。 エラーログ エラーログには、起動時やシャットダウン時だけでなく、サーバ操作中に生成されたエラーメッセージ、警告、注意事項が含まれており、起動時間やシャットダウン時間も記録されます。 基本的なエラーログのフォーマットは以下の通りです。 timestamp thread ID [error type] [error code] [MySQL subsystem] Error message text Error types include System, Warning, Note, and ERROR. Typical log entries might look like this: 2020-05-24T11:55:27.611014Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20) starting as process 36070 2020-05-24T12:14:51.002836Z 2 [Note] [MY-010051] [Server] Event Scheduler: scheduler thread started […]
Read More