MySQL 4.1 と MySQL 5.0 の共存環境を構築する
RHEL4 で MySQL 4.1 と MySQL 5.0 を共存させた時のメモ。
1. 要件
今回の要件は下記の通り。
便宜上、設定等について下記の通り仮定する。
2. 事前準備
MySQL 5.0 の実行ユーザーとして mysql50 ユーザーを作成する。
[root@localhost ~]# useradd mysql50
つづいて MySQL 5.0 のインストール先となるディレクトリを作成する。
[root@localhost ~]# mkdir /usr/local/mysql50 [root@localhost ~]#chown -R mysql50. /usr/local/mysql50
最後にMySQLのソースコードを入手する。http://dev.mysql.com/downloads/mysql/ からたどっていって mysql-5.0.xx.tar.gz を探し、指定されたURLからダウンロード。現時点の5.0系最新バージョンは 5.0.89 だった。
[root@localhost ~]# cd /usr/local/src [root@localhost src]# wget [指定されたURL] [root@localhost src]# tar xvzf mysql-5.0.xx.tar.gz [root@localhost src]# chown -R mysql50. mysql-5.0.xx
また、念のために既存の4.1で使用しているデータベースとmy.cnf はバックアップをとっておくべきだろう。
3. configure
mysql50ユーザーになり、configure を実行する。
[root@localhost ~]# su - mysql50 [mysql50@localhost mysql-5.0.xx]$ cd /usr/local/src/mysql-5.0.xx [mysql50@localhost mysql-5.0.xx]$ ./configure \ --prefix=/usr/local/mysql50 \ --with-mysqld-user=mysql50 \ --with-tcp-port=53306 \ --with-unix-socket-path=/usr/local/mysql50/var/mysql.sock \ --with-pthread \ --with-charset=utf8 \ --with-extra-chrasets=all \ --with-named-thread-libs=-lpthread \ --disable-dependency-tracking \ --without-bench \ --without-debug \ --enable-assembler
今回指定したオプションのうち、共存環境の構築に必要なオプションは下記の通り。
~オプション | ~意味 |
--prefix=... | MySQL 5.0 のインストール先の指定。事前準備で作成したディレクトリを指定する。 |
--with-mysqld-user=... | MySQLデーモンの実行ユーザー。事前準備で作成したユーザーを指定する。 |
--with-tcp-port=... | 外部からの接続を待ち受けるポートの指定。デフォルトは3306だがすでに MySQL 4.1 が使用しているため、異なるポートを指定する。 |
--with-unix-socket-path=... | 内部からの接続を待ち受けるUNIXソケットの指定。これも MySQL 4.1 と分ける必要があるため、明示的に指定する。 |
その他のオプションは参考サイトから丸パクリ。
4. インストール
configure が無事に完了したら、make して make install。
[mysql50@localhost mysql-5.0.xx]$ make (省略) [mysql50@localhost mysql-5.0.xx]$ make install (省略)
次にMySQLに付属している mysql_install_db スクリプトを使用してデータベースを作成する。
[mysql50@localhost mysql-5.0.xx]$ scripts/mysql_install_db \ --basedir=/usr/local/mysql50 \ --datadir=/usr/local/mysql50/var \ --srcdir=/usr/local/src/mysql-5.0.xx \ --user=mysql50
つづいてMySQL 5.0用の設定ファイルを作成する。MySQLは標準で /etc/my.cnf を読み込むが、追加でいくつかのファイルを読み込んでそれを上書きすることが可能だ。今回はそのうちの一つ、データベースの保存先ディレクトリに my.cnf を作成し、MySQL 4.0 から変更する点についてのみこちらに記述する。
[mysql50@localhost mysql-5.0.xx]$ mkdir /usr/local/mysql50/var [mysql50@localhost mysql-5.0.xx]$ vim /usr/local/mysql50/var/my.cnf
作成した my.cnf はこんな感じ。
[mysqld] port=53306 basedir=/usr/local/mysql50 datadir=/usr/local/mysql50/var default-character-set=utf8 [mysql.server] user=mysql50 basedir=/usr/local/mysql50 [mysqld_safe] socket=/usr/local/mysql50/var/mysql.sock err-log=/var/log/mysqld50.log pid-file=/var/run/mysqld/mysqld50.pid [client] default-character-set = utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8
最後に root に戻り、起動スクリプトを /etc/rc.d/init.d 以下にコピー、MySQL 5.0 を起動する。
[mysql50@localhost mysql-5.0.xx]$ exit [root@localhost ~]# cd /etc/rc.d/init.d [root@localhost init.d]# cp /usr/local/src/mysql-5.0.xx/support-files/mysql.server ./mysqld50 [root@localhost init.d]# chown root. mysqld50 [root@localhost init.d]# chmod 755 mysqld50 [root@localhost init.d]# chkconfig --add mysqld50 [root@localhost init.d]# service mysqld50 start
無事に起動すれば大成功。起動に失敗した場合は、以下のように自動起動をOFFにして、原因を探る。
[root@localhost ~]# chkconfig mysqld50 off