ふたつのバージョンのMySQLを同時に動かす on AWS Red Hat 7.3

 ひとつまえの日記の続きです。
最近、MySQL のインストールは rpm(CentOS)、あるいは MySQL Installer(Windows)に頼りっきりで、手動インストールからも、すっかり遠ざかっておりました。そんな折に、簡潔でシンプル*1な yoku0825さんの記事に助けられて、そして年末に「AWS触ってみてよ」と推してくれた方のおかげで、環境と時間と情報とやる気が一気にフルハウス
 さほど大きな苦労もせずに、久々にビルドに成功した*2のに気をよくして、同じマシン(OS)上に複数の MySQLサーバを立ち上げるのをやってみました。

ひとつ前の日記( http://sakaik.hateblo.jp/entry/20170103/build_mysql ) の続きです。ひとつ前の日記では、MySQL 5.6.35 をソースコードからビルドして起動しました。

今回やりたいこと

 すでに MySQL 5.6.35が動作している環境(port=15635) に、新たに MySQL 5.6.34 をビルドして、port=15634 で動作させる。
 プラス、起動方法をちょっと楽にする工夫も。

MySQL 5.6.34 のビルドとインストール

 ひとつ前の日記と同様にして、MySQL 5.6.34のソースコードを取得、cmake/make してインストールする。

$ cd ~/mysql
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.34.tar.gz
$ tar xvf mysql-5.6.34.tar.gz 
$ cd mysql-5.6.34
$ cmake -DCMAKE_INSTALL_PREFIX=/home/ec2-user/mysql/mysql5634 -DBUILD_CONFIG=mysql_release .
$ make
$ make install

 後続の作業のために、MySQL 5.6.34をインストールしたフォルダに移動しておきましょう。

$ cd ../mysql5634

mysqld の起動

 MySQL 5.6.35をビルドして起動した時には、mysql_safe にsocketやらportやらを指定するパラメタを長々と書きました。毎回そんなことをするのは面倒なので、今回は my.cnf へ記述しておくことにします。

 まず、データファイルのインストール(作成)から。

 $ ./scripts/mysql_install_db --datadir=./data


 mysql_install_db を実行すると、当フォルダ(ここでは ~/mysql/mysql5634/)に my.cnf ファイルも作成されます。これを編集します。
 ポート、ソケット、データディレクトリ類の指定、およびキャラクタセットの設定もしておきます。

$ vi my.cnf
----
[mysqld]
basedir = /home/ec2-user/mysql/mysql5634 
datadir = /home/ec2-user/mysql/mysql5634/data 
port = 15634 
server_id = 5634 
socket = /tmp/mysql5634.sock 
character-set-server=utf8

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqladmin]
socket = /tmp/mysql5634.sock 

[mysql]
socket = /tmp/mysql5634.sock 
port = 15634 
default-character-set=utf8
----


 MySQL 5.6.34サーバの起動。カレントフォルダにある my.cnf を読み込んでくれるので、これだけで十分(ひとつ前の日記と見比べてください)*3

$ ./bin/mysqld_safe &

 mysqlコマンドラインクライアントから接続してみます。カレントの my.cnf を自動で読み込んでくれるわけではないようで*4、defaults-file パラメタで my.cnf ファイルを指定します。

$ bin/mysql --defaults-file=./my.cnf  -uroot

2つのバージョンを立ち上げて、mysqlクライアントから接続して、statusを確認したところ。5.6.35のほうは キャラクタセットを指定していないので、サーバ側 latin1 になっています。my.cnf で指定した 5.6.34のほうは utf8になっていますね。
f:id:sakaik:20170104185911j:plain



ちなみに、MySQLサーバの停止は、mysqladmin を使用します。

$ ./bin/mysqladmin --defaults-file=./my.cnf shutdown -uroot




参考: 過去の MySQLビルド関係記事(deplicated):
Windows上でのMySQLビルド方法・MySQL5.6+VC2010Express 編 - sakaikの日々雑感~(T)編
Windows上でのMySQLビルド方法まとめ - sakaikの日々雑感~(T)編
初めて MySQL 5.1 をビルドしてみた。 - sakaikの日々雑感~(T)編

*1:「説明が雑」とか言ってすいませんでした

*2:ほぼ5年ぶりのようです

*3:色々なところに配置されている my.cnf の読み込み順については、ここでは紹介しないので興味ある方は調べてみて下さい

*4:以前は読んでくれたんじゃなかったかなぁ、、記憶違いかなぁ