MySQL4とMySQL5の共存(MySQL + Toritonn インストール)


構成

MySQL4 と MySQL5 を共存させる。
MySQL4 は、もともと入っているやつをそのまま残す感じで、MySQL5 をソースからインストールする。
MySQL4 は常時起動するつもりがないく Plesk を使いたいときだけ MySQL4 を起動させようかなという感じだけど、一応両方起動できるようにする。

※あくまでも参考程度にお願いします。
※バックアップはとっておいたほうがよいと思います

MySQL4

  • MySQL 4.1.22
  • ポート = 3306
  • ソケットファイル = /tmp/mysql.sock
  • 設定ファイル = /var/lib/mysql/my.cnf (/etc/my4.cnf)
  • ログファイル = /var/log/mysqld.log

MySQL5

  • Mecab 0.97
  • Senna 1.1.4
  • MySQL 5.0.67
  • Tritonn 1.0.12
  • ポート = 適当に
  • ソケットファイル = /tmp/mysql5.sock
  • 設定ファイル = /usr/local/mysql5/my.cnf (/etc/my5.cnf)
  • ログファイル = /var/log/mysql5/


確認

1) apache 関連がインストールされているか確認

$ yum list installed | grep apr
$ yum list installed | grep apr-util

インストールされていなかった場合はインストールする

試してないけど、これかな。

$ sudo yum install appr
$ sudo yum install apr-util

2) mysql ユーザが存在するか確認

$ sudo cut -d: -f1 /etc/passwd

ユーザが存在した場合は mysql ユーザのグループの確認

$ id mysql

ユーザが存在しなかった場合は作成する

$ sudo groupadd mysql
$ sudo useradd -g mysql mysql


インストールに必要なモジュールをインストール

環境にあわせて適当にインストールしてください。

$ sudo yum install ncurses-devel
$ sudo yum install libtool
$ sudo yum install libtool-ltdl
$ sudo yum install libtool-ltdl-devel

$ sudo yum install readline-devel
$ sudo yum install libxslt-devel
$ sudo yum install libxml2-devel

$ sudo yum install gcc-c++
$ sudo yum install gcc-java
$ sudo yum install gcc-objc
$ sudo yum install gcc4
$ sudo yum install gcc4-c++
$ sudo yum install autoconf
$ sudo yum install libpng-devel
$ sudo yum install libjpeg-devel
$ sudo yum install libmcrypt-devel
$ sudo yum install ImageMagick-devel
$ sudo yum install automake
$ sudo yum install bison


Mecab インストール

インストール

$ cd /usr/local/src
$ wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-0.97.tar.gz
$ tar zxvf mecab-0.97.tar.gz
$ cd mecab-0.97
$ ./configure --prefix=/usr/local/mecab --with-charset=utf8
$ make
$ sudo make install

共有ライブラリに追加

ファイルの修正

mecab.conf を新たに作成し「/usr/local/mecab/lib」を記述する。

$ sudo vim /etc/ld.so.conf.d/mecab.conf

/usr/local/mecab/lib

ldconfig 更新

$ sudo ldconfig

確認

$ ldconfig -p | grep 'mecab'


Mecab の辞書インストール

$ cd /usr/local/src
$ wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-ipadic-2.7.0-20070801.tar.gz
$ tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --prefix=/usr/local/mecab --with-charset=utf8 --with-mecab-config=/usr/local/mecab/bin/mecab-config 
$ make 
$ sudo make install


Senna インストール

インストール

$ cd /usr/local/src
$ wget http://globalbase.dl.sourceforge.jp/senna/33763/senna-1.1.4.tar.gz
$ tar zxvf senna-1.1.4.tar.gz
$ cd senna-1.1.4
$ ./configure --prefix=/usr/local/senna --with-charset=utf8 --with-mecab --with-mecab-config=/usr/local/mecab/bin/mecab-config
$ make
$ sudo make install

共有ライブラリに追加

ファイルの修正

senna.conf を新たに作成し「/usr/local/senna/lib」を記述する。

$ sudo vim /etc/ld.so.conf.d/senna.conf

/usr/local/senna/lib

ldconfig 更新

$ sudo ldconfig

確認

$ ldconfig -p | grep 'senna'

インストール

$ cd /usr/local/src
$ wget http://osdn.dl.sourceforge.jp/tritonn/36449/tritonn-1.0.12-mysql-5.0.67.tar.gz
$ tar zxvf tritonn-1.0.12-mysql-5.0.67.tar.gz
$ cd tritonn-1.0.12-mysql-5.0.67

$ ./configure
--prefix=/usr/local/mysql5 
--libexecdir=/usr/local/mysql5/bin 
--localstatedir=/home/mysql/data 
--enable-thread-safe-client 
--enable-assembler 
--enable-local-infile 
--with-charset=utf8 
--with-collation=utf8_general_ci 
--with-extra-charsets=complex 
--with-pic 
--with-pthread 
--with-mysqld-user=mysql 
--with-mecab=/usr/local/mecab 
--with-senna=/usr/local/senna
--with-unix-socket-path=/tmp/mysql5.sock
--with-tcp-port=指定したポート
$ make
$ sudo make install


MySQL5 のデータベースファイルを置く場所を作成

/usr/local/mysql/data にデータファイルを置くのがよくやると思うけど、今回は、/home/mysql/data に置くので、以下のようにフォルダを作成する。

$ su - mysql
$ cd /home/mysql
$ mkdir data


my.cnf 作成

1) my.cnf を置く場所

/etc/my.cnf は今回は使わないことにしました。
MySQL4 で起動したときも、MySQL5 で起動したときも、どちらもはじめに my.cnf を読みに行くためです。
DATADIR/my.cnf を使うことにしました。

参考:http://dev.mysql.com/doc/refman/4.1/ja/option-files.html

2) MySQL4 の my.cnf の作成

すでにインストールされているMySQL4が /etc/my.cnf を使っているので、移動しておく。

$ sudo mv /etc/my.cnf /etc/my4.cnf

DATADIR/my.cnf にシンボリックリンクをはる。

$ sudo ln -s /etc/my4.cnf /var/lib/mysql/my.cnf

3) MySQL4 の my.cnf の修正

デフォルトだと文字コードが latin1 になっているので、utf8 に変更するため、my.cnf を修正する。

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)

以下のように my4.cnf を修正する。

$ sudo vim /etc/my4.cnf

mysql に以下を追記する

[mysql]
default-character-set = utf8

mysqld に以下を追記する

[mysqld]
default-character-set = utf8
init-connect=SET NAMES utf8

mysqldump に以下を追記する

[mysqldump]
default-character-set = utf8

skip-networking をコメントアウト

skip-networking をコメントアウトする。
skip-networking は、ネットワーク (TCP/IP) 経由の接続を許可しない。

変更前
#skip-networking
 ↓
変更後
skip-networking

4) MySQL5 の my.cnf の作成

サンプルがあるのでコピーして使う。

$ sudo cp /usr/local/src/tritonn-1.0.12-mysql-5.0.67/support-files/my-medium.cnf /etc/my5.cnf

DATADIR/my.cnf にシンボリックリンクをはる。

$ sudo ln -s /etc/my5.cnf /usr/local/mysql5/my.cnf

5) MySQL5 の my.cnf の修正

以下のように my5.cnf を修正する。

$ sudo vim /etc/my5.cnf

skip-character-set-client-handshake を追加

[mysqld] に skip-character-set-client-handshake を追加する。
skip-character-set-client-handshake は、サーバーの文字コード設定をクライアントでもそのまま使う設定。

[mysqld]
skip-character-set-client-handshake

skip-networking をコメントアウト

skip-networking をコメントアウトする。
skip-networking は、ネットワーク (TCP/IP) 経由の接続を許可しない。

変更前
#skip-networking
 ↓
変更後
skip-networking


DB 初期化

$ sudo /usr/local/mysql5/bin/mysql_install_db --defaults-file=/etc/my5.cnf --user=mysql


自動起動

MySQL5 起動のためのファイルコピー

$ sudo cp /usr/local/src/tritonn-1.0.12-mysql-5.0.67/support-files/mysql.server /etc/init.d/mysqld5
$ sudo chmod 755 /etc/init.d/mysqld5

MySQL5 自動起動設定に mysqld を追加

$ sudo chkconfig --add mysqld5

MySQL5 自動起動設定

$ sudo chkconfig mysqld5 on

MySQL5 自動起動設定の確認

ランレベル 2, 3, 4, 5 になっていればよい。

$ chkconfig --list mysqld5

MySQL4 自動起動をOFF

MySQL4 は常に使う訳ではないので、off にしておく。

$ sudo chkconfig mysqld off

MySQL4 自動起動設定の確認

off になっていればよい。

$ chkconfig --list mysqld


MySQL4 起動

起動

$ sudo /etc/init.d/mysqld5 stop
$ sudo /etc/init.d/mysqld start
$ mysql -u root -p

停止

$ sudo /etc/init.d/mysqld stop


MySQL5 起動

起動

$ sudo /etc/init.d/mysqld stop
$ sudo /etc/init.d/mysqld5 start
$ /usr/local/mysql5/bin/mysql -u root -p

停止

$ sudo /etc/init.d/mysqld5 stop


mysqld_safe を使って MySQL5 起動

起動

$ sudo /usr/local/mysql5/bin/mysqld_safe --defaults-file=/etc/my5.cnf --user=mysql &

停止

$ sudo /usr/local/mysql5/bin/mysqladmin --defaults-file=/etc/my5.cnf shutdown

もしくわ

$ sudo /usr/local/mysql5/bin/mysqladmin --port=3307 -u root -p shutdown


パスワード設定

MySQL5 の root ユーザのパスワード設定

$ sudo /usr/local/mysql5/bin/mysqladmin -u root password パスワード


DB にアクセスしたらはじめに行うこと

匿名ユーザの削除

$ /usr/local/mysql5/bin/mysql -u root -p
mysql> use mysql;
Database changed
mysql> DELETE FROM user WHERE User='';
Query OK, 2 rows affected (0.00 sec)
mysql> DELETE FROM db WHERE User='';
Query OK, 2 rows affected (0.00 sec)
mysql> FLUSH  PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)


動作確認

Senna 動作確認

参考:http://qwik.jp/senna/check_install.html

Tritonn 動作確認

参考:http://qwik.jp/tritonn/userguide.html


MySQL5 のログの設定

mysql のログは、data フォルダに保管するのが一般的?どうなんだろ?
ためしに syslog に出力してみる。

フォルダ作成

$ sudo mkdir /var/log/mysql5
$ sudo chown mysql:mysql /var/log/mysql5

設定ファイル(my5.conf)の修正

[mysqld] にログを出力する場所を指定する。
[mysqladmin] にログローテートする時に mysqladmin flush-logs を実行するユーザを記述しておく。

$ sudo vim /etc/my5.cnf

[mysqld]
log = /var/log/mysql/mysql.log
log-error = /var/log/mysql/mysql-error.log
log-slow-queries = /var/log/mysql/mysql-slow.log
[mysqladmin]
password = パスワード
user= root


ログローテートの設定

設定ファイルのコピー

サンプルがあるのでコピーして使う。

$ sudo cp /usr/local/src/tritonn-1.0.12-mysql-5.0.67/support-files/mysql-log-rotate /etc/logrotate.d/mysql5

ファイルの修正

mysqladmin の場所を確認する。
環境にあわせて適当に設定してください。

$ sudo vim /etc/logrotate.d/mysql5
  • 変更前
    /home/mysql/data/mysqld.log {
            # create 600 mysql mysql
            notifempty
    		daily
            rotate 3
            missingok
            compress
        postrotate
    	     # just if mysqld is really running
    	     if test -x /usr/local/mysql/bin/mysqladmin && \
    	        /usr/local/mysql/bin/mysqladmin ping &>/dev/null
    	     then
    	        /usr/local/mysql/bin/mysqladmin flush-logs
    	     fi
        endscript
    }
  • 変更後
    /var/log/mysql5/*log {
    		# create 600 mysql mysql
    		notifempty
    		daily
    		rotate 4 #4回分のログを保存する
    		missingok
    		compress
    	postrotate
    		# just if mysqld is really running
    		if test -x /usr/local/mysql5/bin/mysqladmin && \
    			/usr/local/mysql5/bin/mysqladmin --defaults-file=/etc/my5.cnf ping &>/dev/null
    		then
    			/usr/local/mysql5/bin/mysqladmin --defaults-file=/etc/my5.cnf flush-logs
    		fi
    	endscript
    }

記述に間違いがないか確認

$ logrotate -d /etc/logrotate.d/mysql5 

MySQL5 の再起動

$ sudo /etc/rc.d/init.d/mysqld5 restart

ローテートの確認

ローテートを実行する

$ sudo /usr/sbin/logrotate /etc/logrotate.conf

ローテートが実行されたかどうか確認

$ sudo vim /var/lib/logrotate.status

ファイルが作成されているかも確認する

$ ls -la /var/log/mysql5

一週間後にローテートが実行されるかどうか確認

logrotate.status を一週間前のものに書き換える

$ sudo vim /var/lib/logrotate.status

変更前
"/var/log/mysql/mysql-error.log" 2009-4-26
"/var/log/mysql/mysql-slow.log" 2009-4-26
"/var/log/mysql/mysql.log" 2009-4-26
 ↓
変更後
"/var/log/mysql/mysql-error.log" 2009-4-19
"/var/log/mysql/mysql-slow.log" 2009-4-19
"/var/log/mysql/mysql.log" 2009-4-19

ローテートを実行する

$ sudo /usr/sbin/logrotate /etc/logrotate.conf

ローテートが実行されたかどうか確認

$ sudo vim /var/lib/logrotate.status

ファイルが作成されているかも確認する

$ ls -la /var/log/mysql5

共有ライブラリに追加

ファイルの修正

neon.conf を新たに作成し「/usr/local/mysql5/lib/mysql」を記述する。

$ sudo vim /etc/ld.so.conf.d/mysql5.conf

/usr/local/mysql5/lib/mysql

ldconfig 更新

$ sudo ldconfig

確認

$ ldconfig -p | grep 'mysql'


メモ

  • Drizzle
  • Drizzle
  • MySQL Cluster とか MySQL Proxy を使うなら、MySQL5.1.x


Comment



Counter: 11173, today: 6, yesterday: 0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-09-24 (火) 14:56:41 (1827d)