uzullaがブログ

uzullaがブログです。

俺得mysql用ツール、set_mysql_data.php

ここ数日のApacheの話書きたかったけど、なんかPHPがまたエラーを吐き始めたのでまた今度。

久々に自作ツールをちょっと修正したついでになにげなくgithubにあげたのでその話です。

ただ、みなさん私よりオシャレ、あるいは若者でしょうから、本エントリは役立たない可能性が高いです。

「みなさんmysqlつかってますか?」

みなさんyumで、aptで、brewで、tar ballで、その他いろいろな手段でmysql-serverをインストールすると思います。その時、大体の人はdata ディレクトリのことはあんまり意識しないようです。つまり、デフォルトの /var/lib/mysql とかをそのままつかってる人が多い。

そうすると長年開発していくウチにshow databases; がドンドン沢山でてきてめんどいなあ、みたいな事になったりするわけです。

あと、既存のDBを持ってくるときとか、mysqldump --all-databasesでダンプされたモノシリックなsqlを展開するのも、なにかはいってるDBにはむずかしかったりしますよね(これが一番よく使う理由かも)。

「ならない?なるほど、話は続けます」

MysqlのDataディレクトリは、そのDB(create databaseのdatabaseより上位の入れ物)のすべてがはいったディレクトリですが、実際にはmysql_install_dbでどこにでもつくることができます。たとえばUSBメモリの中とかにも*1

ちょっとばかり設定をすれば、sockファイルや、ログ、そういったものも一箇所にまとめる事ができるので、沢山のMysqlを共存させる(ポート番号をかえれば同時に起動も出来る)ことができて便利です。

「え、VMでできるからいらない?そうですね」

まあ、普通の人はVMをつかうといいとおもいます!「VMつかうとバッテリーがめっちゃ減るし、いちいちどこにログインしてるか意識しつつ開発したくない、IDEとかツールもガンガンつかいたい」という私みたいな人向けです。

というわけで

https://github.com/uzulla/mysql_data_setup.php

これです。なんでこういうのにPHPなのか?制作者が私だからです。

以下のような感じでつかえます。

# 新しくmysql data dirを作成
$ mkdir /path/to/my_project_data
$ cd /path/to/project_mysql
$ /path/to/this/mysql_data_setup.php

# 開始
$ cd /path/to/my_project_data
$ start_mysql.sh

# 停止
$ cd /path/to/my_project_data
$ stop_mysql.sh

# 削除
$ cd /path/to/my_project_data
$ stop_mysql.sh
$ cd ..
$ rm -r /path/to/project_mysql

ちなみに、これをがんばってつかうと、Mysqlのテスト用のDBをつくったりもできますが、やんごとなき理由がなければ、PerlのTest::Mysqldとかを使う方が良いでしょう。

まとめ

みなさんこういうせこいことやると、平成生まれに「なんでそんなことをする意味が…」などと言われ、「ダサイ」「イモい」「古くさい」というレッテルをゲットできますので、素直にVMをつかったほうがQoLは高まるのではないでしょうか!

ただ、昭和の人間においては、VMはモッタイナイとか、あるいは契約(検閲)とか、古代のシステムのメンテ(mysqldump --all-databasesでできたdumpをガッとロードしてシュッと直した後、バッと捨てたい時)とか、やんごとなき理由でこうしなければならないこともあるのです。

こちらからは以上です。

*1: