debian(Linux)でのデータファイル群の場所

結論を先にいうと、/var/lib/mysqlということです。


自分のPC内ではすぐに見つかったテーブルごとのファイルや、ibdataなどだったのだけど、仕事用のサーバでは見つからない。僕のPCは、windowsだから分かりやすい位置にあったのだろうか。普通にmysqlディレクトリのdataディレクトリの中にibdataやib_logfileはあり、そこにデータベースごとのディレクトリがあってその中に、MyISAMのテーブル構造(.frm)やデータ(.MYD)やインデックス(.MYI)やinnDBのテーブル構造(.frm)があった。


しかし、Linuxでは、/etc/mysqlの中にdataディレクトリがない。これはWinSCPで見たので権限とかの問題で隠されているのかと、Puttyでつないで、慣れないLinuxコマンドを怯えながら使って/etc/mysqlの中を見たのだけど、それらしいものは発見できなかった。ちなみに今回使ったのは、ls -l(ディレクトリ内を見るコマンド -aオプションは.ではじまる隠しファイルも見れる)とcd(ディレクトリ移動コマンド)でした。

cd /etc/mysql

のような感じでした。これら2つのコマンドは、書き変えたりするわけでもないのだけど、やっぱりLinuxはこわい。と言いつつも慣れていかないといけない。


話がずれてしまったのだけど、ちょうどLinuxのcdコマンドを見ていたときに、Linuxディレクトリのおおまかな説明があって、etcはシステム設定ファイルのあるところとあり、それならここにデータがあるわけはないと感じた。その表を見ていると、varにログファイルやスプールがあると書いてあるので、そこを確認しにいく。他のページも参考にすると,ファイル郡は/var/data/mysql/data/***/とあるので、とりあえずWinSCPで探っていく。var内にdataディレクトリがない。あとは勘でmysqlディレクトリがないかを見ながら探していくと、/var/libの中にmysqlを発見。そして、さらにmysqlの中を見るとibdata, ib_logfileなどを目的のものを発見した。長い旅だった。前回ないと思って探して1時間、今回1時間の旅でした。
そしてもって、設定ファイルmy.cnfをみると

[mysqld]
datadir = var/lib/mysql

という感じにちゃんとどこにデータベースディレクトリがあるか書いてあるわけです。ちゃんと確認しておきなさいということなんだろうけど、知らないことばかりで全てはあとで気づく。


/var/lib/mysqlに、ibdata, ib_logfile0, ib_logfile1がある。それ以降のデータベースディレクトリに.frmが存在する。現在運用しているサーバでのデータ容量は、ibdataは96M、 ib_logfileは両方とも5Mだった。