MySQLがデータを保管する場所 〜 データディレクトリ
MySQLでは、データの保管場所を原則としてデータディレクトリとしている。ただし、これは原則であって、InnoDBなどのストレージエンジンでは必ずしもそうではないことを初めに述べておく。
さて、データディレクトリは、「MySQL導入のポイント 〜 Ubuntu14にMySQLをapt-get、rpmを使わずにインストールする」で述べたように、インストール時に指定する。
データディレクトリをどこに指定したのかを忘れた場合は、my.cnfで確認することができる。
my.cnfがどこにあるのかを忘れた場合はlocateコマンドで検索できるだろう。
root@ubuntu:~# updatedb root@ubuntu:~# locate my.cnf /etc/mysql/my.cnf
my.cnfでデータディレクトリの場所を確認する。
root@ubuntu:~# less /etc/mysql/my.cnf
/var/lib/mysqlがデータディレクトリであることが分かる。
/var/lib/mysqlへ移動して、構成を確認してみる。
root@ubuntu:~# cd /var/lib/mysql/ root@ubuntu:/var/lib/mysql# ls auto.cnf ibdata1 ib_logfile1 mysql_upgrade_info debian-5.5.flag ib_logfile0 mysql performance_schema
紫色のものはデータベース毎のディレクトリである。
試しに、BLOGというテーブルを作成してみる。
#mysql -uroot -p mysql> create database BLOG; Query OK, 1 row affected (0.01 sec)
データディレクトリを確認してみると確かに「BLOG」というディレクトリが作成されている。
つまり、紫色のディレクトリはデータベース毎のデータを保管するディレクトリである。
さらに、ディレクトリの中を確認するが、db.optというファイルしか存在しない。データベースを作成しただけなので当然だろうか。
root@ubuntu:/var/lib/mysql# cd BLOG/ root@ubuntu:/var/lib/mysql/BLOG# ls db.opt
BLOGデータベースにテーブルを作成してみる。
mysql> create table BLOG.tbl_blog (id int, name varchar(20)); Query OK, 0 rows affected (0.17 sec)
データディレクトリを確認する。
root@ubuntu:/var/lib/mysql/BLOG# ls
db.opt tbl_blog.frm tbl_blog.ibd
テーブルを作成すると.frmファイルと.ibdファイルが作成された。
それぞれのファイルの役割は次のとおりである。
◎.frmファイル : フィールド定義などテーブル情報を記録するファイル
◎.ibdファイル : テーブル毎にディレクトリとインデックスを記録するファイル(テーブルスペースではなく、ibdファイルに記録する)
※)ibdファイルが使用されるのは、InnoDBストレージを使用して、innodb_file_per_tableによる保存方法である場合。