お仕事の関係で「MySQLのデータディレクトリ(インスタンス)を、物理的に別のディレクトリにしたい。」との要望があって、調査を依頼されました。

ちょっと調べて見たところ、MySQLのデータベースの実体はファイル(ディレクトリ)という事をしりました。
MySQLでは、datadir という変数があって、 この変数がデータベースディレクトリ名を保持しています。
このdatadirで指定されたパスの下にデータベースがフォルダとして作成されていくわけですね。

mysql> SHOW VARIABLES LIKE 'datadir';
+---------------+-----------------------+
| Variable_name | Value                 |
+---------------+-----------------------+
| datadir       | /usr/local/mysql/var/ |
+---------------+-----------------------+
1 row in set (0.00 sec)

で、このdatadirの下に作成されるデータベースを物理的に違うディスクに置く方法ですが、
一番手っ取り早いのはシンボリックリンクです。

たとえば、/disk1/database1と/disk2/database2というデータベースを作りたければ、
CREATE DATABSEをせずに、

$ ln -s /disk1/database1 /usr/local/mysql/var/database1 
$ ln -s /disk2/database2 /usr/local/mysql/var/database2 

としてあげれば、大丈夫です。あとはリンク先のディレクトリに書き込みの権限を与えてあれば、
CREATE DATABASEせずに、USE database1とか通ります。で、CREATE TABLEでOK。

MySQLのデータベースって単なる空ディレクトリで、ファイルシステムを作成すると、データベースとして認識してくれるという凄いオチが・・・

つまり
CREATE DATABASE hoge = mkdir hoge
と等価なわけですね。

・・・ちょっとビックリ。

ちなみに、InnoDB使っている場合は、my.cnfの設定で複数のディスクを指定できるんですが、
どのデータベースが、何処のディスクに入るか指定できるか見検証なので解らないです。

今度やってみよう。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: MySQLのデータディレクトリを物理的に別のディスクに

このブログ記事に対するトラックバックURL: http://hackmylife.net/mt/mt-tb.cgi/421

コメントする

このブログ記事について

このページは、hackmylifeが2007年5月10日 23:46に書いたブログ記事です。

ひとつ前のブログ記事は「OOJS2」です。

次のブログ記事は「地球へ・・・」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.0

アドセンス

MoMAstore MoMAstore
MoMAstore MoMAstore
MoMAstore MoMAstore
MoMAstore MoMAstore
MoMAstore MoMAstore
MoMAstore
MoMAstore
MoMAstore
MoMAstore