hack my life: MySQLアーカイブ

MySQLの最近のブログ記事

お仕事の関係で「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の設定で複数のディスクを指定できるんですが、
どのデータベースが、何処のディスクに入るか指定できるか見検証なので解らないです。

今度やってみよう。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちMySQLカテゴリに属しているものが含まれています。

前のカテゴリはmusicです。

次のカテゴリはnetworkです。

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

MySQL: 月別アーカイブ

Powered by Movable Type 4.0

アドセンス

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