MySQLのデータディレクトリの内容とその役割について
現在、「エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド」というMySQLのディープな本を読んでいます。
その中の「ディレクトリ構造とシステムデータベース」という項目の中で、MySQLのデータディレクトリの中身について一覧的に書いてあったので忘れないようにメモっときます。
実際「このファイルって何の役割があるの?」ということを知らないまま運用してる人って多いと思うんですよね。 そういう人はMySQLがトラブった時に決まって慌てることになるのでこの際しっかり覚えておきましょう。
MySQLデータディレクトリの内容とその役割
データファイル名 | 格納場所 | 役割 |
---|---|---|
ibdata1 ib_logfile0 ib_logfile1 |
データディレクトリ内 | InnoDBデータおよびログファイル。 |
(テーブル名).ibd | 各DBディレクトリ内 | innodb_filers_per_tableオプションを利用した際に作られる、テーブルごとの格納データファイル。(通常はデータは共有データファイルに格納される) |
(テーブル名).MYI (テーブル名).MYD |
各DBディレクトリ内 | ストレージエンジンをMyISAMにした際に作られる格納データファイル。 拡張子が「MYI」がインデックスデータで、「MYD」が実データ。 |
db.opt | 各DBディレクトリ内 | 各データベースのデフォルト文字コードなどの属性が格納される。 |
(テーブル名).par | 各DBディレクトリ内 | パーティション定義ファイル。 |
(テーブル名).TRG (テーブル名).TRN |
各DBディレクトリ内 | トリガ関連のファイル。 拡張子が「TRG」がテーブルごとのトリガ定義が格納されており、「TRN」がトリガ名が格納されているファイル。 |
(ホスト名)-bin.NNNNNN (ホスト名)-bin.index |
データディレクトリ内 | バイナリログ。 「NNNNNN」は0000001から始まる通し番号になる。 |
(ホスト名)-relay.bin.* | データディレクトリ内 | バイナリログと同じ形式の中間ログファイル。(レプリケーションスレーブ側のみ) |
master.log relay-log.info |
データディレクトリ内 | レプリケーションスレーブ側の設定やステータスが格納されるレプリケーション情報ファイル。(レプリケーションスレーブ側のみ) |
(テーブル名).ndb | 各DBディレクトリ内 | MySQL Cluster用テーブル情報ファイル。 |
(ホスト名).err | データディレクトリ内 | エラーログファイル。 エラーメッセージや、起動・終了に関係するメッセージが記録される。 |
(ホスト名)-slow.log | データディレクトリ内 | 一定時間以上かかったクエリ(スロークエリ)や、インデックスを使用していないクエリが記録されるファイル。 |
(ホスト名).log | データディレクトリ内 | MySQLサーバーへの全てのリクエストが記録される、一般クエリログファイル。 デバッグ等で使用する。 |
(ホスト名).pid | データディレクトリ内 | 実行中のmysqldのpidが格納されるファイル。 mysqld_safeがこのファイルの内容を見てmysqldの生存確認を行う。 |
こうしてみると、結構いろいろあるんですよね。
意味が分からないと、サーバーの容量が逼迫したりした場合にどう整理すれば良いか分からなくなるので、ちゃんと理解して扱うようにしましょうね。
2012-06-30