【MySQL】4.1と5.5を1台のサーバーで両方使えるようにする
問題
1台のサーバーでバージョンの違う2つのMySQLデータベースサーバーを稼動させたい。
4.1系(古い環境)と5系(最新の環境)が両方必要となってしまった。共存可能?
解答例
1台のサーバーで、複数のMySQLデータベースサーバーを稼動させることは可能。
そのMySQLのバージョンは、同じバージョンでも違うバージョンでも可能。
通常の手順で最新(5系)のMySQLがインストールされて、稼動しているとする。そこに古い(4系)のMySQLをインストールして動かしてみる。
1、MySQL4を入手
もう配布していないので、古いサーバーから漁ってきた。
2、MySQL4をコンパイル、インストール
prefixを指定して、既存のMySQLと別の場所に。
# ./configure --prefix=/usr/local/mysql4.1 --with-extra-charsets=all --with-mysqld-user=mysql --with-innodb # make # make install
3、MySQL4を設定
my.cnf を、この辺に置く /usr/local/mysql4.1/var/my.cnf
ポート、ソケットを変える。
# cp /usr/local/src/mysql-4.1.22/support-files/my-medium.cnf /usr/local/mysql4.1/my.cnf # vi /usr/local/mysql4.1/var/my.cnf [mysqld] port = 3307 socket = /tmp/mysql41.sock
3、自動起動の設定
先に通常通りのインストールをした5系のMySQLにmysqlの名前は使われているので、適当な名前に設定。
# cp /usr/local/src/mysql-4.1.22/support-files/mysql.server /etc/init.d/mysql41
# chmod 755 /etc/init.d/mysql41
# chkconfig --add mysql41
4、データベース初期化
# /usr/local/mysql4.1/bin/mysql_install_db --basedir=/usr/local/mysql4.1 # chown -R mysql:mysql /usr/local/mysql4.1
5、両方起動する
このあたりから、どうやるのが最善策なのかわからないまま力技。
MySQL4起動時に/etc/my.cnf を読まれてしまうのだが、MySQL5用の設定項目が読み込まれてしまい、MySQL4にとっては不明な設定項目があるとエラーで起動しないなどの現象が発生する。
MySQL5側はごく普通の状態のままにしておきたかったので、MySQL4側では/etc/my.cnf を読まないように、起動スクリプトを変更した。
これで /usr/local/mysql4.1/var/my.cnf に書いた設定だけを読んで起動してくれる。
# vi /etc/init.d/mysql41
200行目付近
---変更前
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &
---変更後
$bindir/mysqld_safe --defaults-file=/usr/local/mysql4.1/var/my.cnf --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &
ようやく起動。
# /etc/init.d/mysql41 start
6、確認など
両方起動している。
# ps x | grep mysql 5876 pts/0 S 0:00 /bin/sh /usr/local/mysql4.1/bin/mysqld_safe --defaults-file=/usr/local/mysql4.1/var/my.cnf --datadir=/usr/local/mysql4.1/var --pid-file=/usr/local/mysql4.1/var/xxxx.pid 7091 pts/0 S+ 0:00 grep mysql 15768 ? S 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/xxxx.pid
MySQL5に接続(自サーバーで、デフォルトのポート、ソケットで起動しているので、コマンド引数をいろいろ省略)
# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 20 Server version: 5.5.12-log Source distribution
MySQL4に接続(UNIXドメインソケットで)
# mysql --socket=/tmp/mysql41.sock -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 4.1.22-log
MySQL4に接続(TCP/IPで)
# mysql -h 127.0.0.1 -P 3307 -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 4.1.22-log
無事起動、接続できたので、後はユーザー追加、パスワード設定などおこなう。
コメント