Glitch

MySQL, MongoDB, Python, Go

MySQLで複数バージョンを使い分ける方法

複数バージョンのテストするときに、なるだけミニマルにそれぞれを使い分けたかったのでメモ。
そんなに難しくないです。

ちなみにmysqlenvというMySQL環境管理ツールを作っている方もたくさんいらっしゃいます。
インストールとかを簡単にしたい人はこちらも併せてご確認ください。
https://github.com/xaicron/mysqlenv
https://github.com/shim0mura/mysqlenv

MySQL Download

from http://dev.mysql.com/downloads/mysql/

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz/from/http://cdn.mysql.com/
$ tar zxvf mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
$ mv mysql-5.6.12-linux-glibc2.5-x86_64 mysql-5.6.12
$ cd mysql-5.6.12

私はだいたいLinux - Generic (glibc 2.5) (x86, 64-bit), Compressed TAR Archive使ってます。
コンパイルするのめんどいから(´・ω・`)

my.cnf

$ cp ./support-file/my-default.cnf ./my.cnf
$ vim my.cnf
port = 5612
user = mysql
basedir = /path/to/mysql-5.6.12
datadir = /path/to/mysql-5.6.12/data
tmpdir  = /path/to/mysql-5.6.12/tmp
socket  = /path/to/mysql-5.6.12/tmp/mysql.sock

pid-file  = /path/to/mysql-5.6.12/logs/mysqld.pid
log-error = /path/to/mysql-5.6.12/logs/mysqld

まぁ、パスを自分のディレクトリ配下にしちゃいましょう。
この場合、tmpとlogsも作っちゃってます。

んで、ポートとソケットを指定します。
これらを通じてクライアント・サーバ通信が行われます。
つまりこれらがそれぞれのバーションでかぶってなければ、同時起動してもいけると。

あとのmy.cnfはお好みで。

mysqld_safe

$ /path/to/mysql-5.6.12/bin/mysqld_safe \
        --default-file=/path/to/mysql-5.6.12/my.cnf &
    • default-fileオプションでmy.cnfの場所を指定します。

これがないと/etc/my.cnfを読み込んじゃうようです。
さらにはこのオプションは他のオプションよりも前、つまり先頭にないと機能しないらしいですね。
他のオプションつけるときは注意。

まぁ、my.cnfの中でひと通り指定しちゃえば、こんなけでおk。

クライアントから接続

$ mysql --port=5612 \
        --socket=/path/to/mysql-5.6.12/tmp/mysql.sock \
        -uUSER -pPASS

このmysqlクライアントは今インストールしたものでも既存のものでもどちらでもよいです。
ポート番号とソケットのパスを対象のバージョンのMySQLサーバのものにすればオッケーです。


ポートとソケット重要というお話でしたヾ(゚Д゚ )