Ubuntu12.10複数のMysql 5をインストールする.5例(一)

8192 ワード

この記事では、1台のマシンに複数のmysqlインスタンスをインストールする方法について説明します(このようなメリットはしばらく議論しないでgoogleできます).
1.mysqlのインストール
1)必要なユーザーを作成します.ユーザーグループ(rootでインストールしないでください.mysqlは直接sudoでmysqldを起動することはできません.--user=mysqlを指定する必要があります.)
1 sudo groupadd mysql
2 sudo useradd -r -g mysql mysql

2)tarファイルを/optなどのディレクトリにコピーし、解凍する
cd /opt
sudo tar zxvf ~/download/mysql-5.x-linux-glibc2.5-x86_64.tar.gz 

3)リンクの作成
1 cd /usr/local  
2 sudo ln -s /opt/mysql-5.x-linux-glibc2.5-x86_64 mysql  

#binディレクトリへのリンクの同時作成
1 sudo ln -s /usr/local/mysql/bin/* /usr/local/bin/cd mysql
2 sudo chown -R mysql .
3 sudo chgrp -R mysql .

4)db instanceのインストール
sudo mkdir -p /data/mysql/mysql01

最初のinstanceのpid,sock,dataを格納し、順番に類推してmysql 02,03を作成できます.
 
sudo chown mysql:mysql /data/mysql -R
# mysql
/data/mysql

#次のスクリプトを実行すると、最初のinstanceのデータベースが初期化されます.
#その前にlibaio 1をインストールし、コマンドを実行する必要がある場合があります.
sudo apt-get install libaio1 libaio-dev
sudo scripts/mysql_install_db --user=mysql --datadir=/data/mysql/mysql01

#安全のため、dataディレクトリを除くすべてのディレクトリのownerをrootに変更
1 sudo chown -R root .  
2 sudo chown -R mysql data 

#構成my.cnf、datadir、pid、socketなどの構成を変更する必要があります
1 sudo cp support-files/my-medium.cnf /etc/mysql/my.cnf

#サービスの構成
sudo cp support-files/mysql.server /etc/init.d/mysql

#起動
#  mysqlsudo service mysql start

#ポートがリスニングされていることを確認するには、次のコマンドを実行します.
sudo netstat -nltp | grep mysql

2.2番目のdb instanceをインストールする
1)データファイルディレクトリの準備
1 sudo mkdir -p /data/mysql/mysql02
2 sudo chown mysql:mysql /data/mysql/mysql02

2)データファイルの初期化
sudo scripts/mysql_install_db --user=mysql --datadir=/data/mysql/mysql02

2番目のmyを構成します.cnf,port=3307を修正し,対応するdatadir,pidおよびsocket!!!
3)cnfを構成して起動する
sudo cp /etc/mysql/my.cnf /etc/mysql/my2.cnf

#指定my.cnf起動instance
sudo mysqld --defaults-file=/etc/mysql/my2.cnf --user=mysql

4)rootパスワードの変更
#ポートがリスニングされていることを確認するには、次のコマンドを実行します.
sudo netstat -nltp | grep mysql

#ps-ef|grep mysqlで2つのinstanceが実行されていることも確認できます
#mysqladminでrootの初期パスワードを指定
sudo mysqladmin -uroot password 'passwd' --socket=/data/mysql/mysql02.sock

5)インストールしたばかりの2つのインストールを検証する
#パラメータを指定せず、デフォルトポート3306、最初のinstanceにアクセス
mysql -uroot -p 

#2番目のinstanceにアクセスするにはsocketを指定する必要があります
mysql -uroot -p -S/data/mysql/mysql02.sock

これで,単機で複数のmysqlをインストールするインスタンスはそれほど悪くなく,単機で複数のmysqlデータベースをインストールする場合と大きく異なる.
3.mysqld_を使うMultiフルインストール
1)新しいmyを作成する.cnf
mysqld_の実行Multi--exampleはマルチインスタンス環境でmyを得ることができる.cnfサンプルは、以下のように少し変更されます.
1 [mysqld_multi]
2 mysqld     = /usr/local/mysql/bin/mysqld_safe
3 mysqladmin = /usr/local/mysql/bin/mysqladmin

#ここのユーザー名パスワードはすべてのinstanceにアクセスでき、shutdownの権限があるはずです.ここでは簡単にrootを直接使用します(導入時にinstanceごとにアカウントを作成する必要があります).
 1 user       = root
 2 password   = passwd 
 3 [mysqld1]
 4 pid-file   = /data/mysql/mysql01.pid
 5 socket     = /data/mysql/mysql01.sock
 6 port       = 3306datadir    = /data/mysql/mysql01
 7 user       = mysql
 8 log = /var/log/mysql/mysql01.log
 9 [mysqld2]
10 pid-file   = /data/mysql/mysql02.pid
11 socket     = /data/mysql/mysql02.sock
12 port       = 3307
13 datadir    = /data/mysql/mysql02
14 user       = mysql
15 log = /var/log/mysql/mysql02.log

このファイルを/etc/mysql/の下に置いて上書きすればいい(元のmy.cnfとmy 2.cnfはそれぞれ2つのinstanceに対して、もう必要ありません)
2)マルチインスタンス実行sudo mysqld_の起動Multi start 1,2はmysqld 1とmysqld 2を同時に起動することができ、start 1,3-4のような式をサポートすることができる.
3)インストール結果の検証
同2.5の手順
4.第3ないし第Nのinstanceを追加し続ける
1)すべてのmysqldを停止する:
sudo mysqld_multi stop (  stop 1    mysqld1  instance,           instance)

2)データファイルのディレクトリの準備
1 sudo mkdir -p /data/mysql/mysql03
2 sudo chown mysql:mysql /data/mysql/mysql03

3)初期化(データファイルのインストール)
sudo scripts/mysql_install_db --user=mysql --datadir=/data/mysql/mysql03

#mysqldを起動します(上記と異なる場合は、my 3.cnfを構成せずにパラメータを直接指定します.効果は同じです).
1 sudo mysqld --port=3308 --datadir=/data/mysql/mysql03 --socket=/data/mysql/mysql03.sock --user=mysql

#パスワードを変更し、mysqld_のために1番目と2番目のinstanceと同じパスワードを保持します.Multiは起動/停止可能
sudo mysqladmin -uroot password 'passwd' --socket=/data/mysql/mysql03.sock

#修正my.cnf,[mysqld 3]の内容を追加する(mysqld 1,mysqld 2を模倣すればよい)
#再起動、killが落ちる前に起動するすべてのmysqldのプロセス
sudo mysqld_multi start

#sudo netstat-nltp|grep mysqlを実行すると、3306-3308がlistenに表示されます.
同時に別々に運転する
1 mysql -uroot -p --socket=/data/mysql/mysql01.sock
2 mysql -uroot -p --socket=/data/mysql/mysql02.sock
3 mysql -uroot -p --socket=/data/mysql/mysql03.sock

それぞれのinstanceにログインできます
 
Linux学習入門チュートリアル:
Linux常用命令全集:アクセス