1. 程式人生 > >mysql多埠實現多個例項以及mysqld_multi管理

mysql多埠實現多個例項以及mysqld_multi管理

有的時候,需要在一臺機器上開啟mysql多個埠,比如說多埠實現資料庫的讀寫分離。本文講解下mysql的多埠開啟,以及mysqld_multi如何來管理mysql的多埠。

常規做法:
1、首先要先把my.cnf配置檔案複製一份,開幾個埠要複製幾份當然要重新命名(3306也可以直接用現成的)。
cp /etc/my.cnf /etc/my3306.cnf
cp /etc/my.cnf /etc/my3307.cnf 

2、修改my3306.cnf,my3307.cnf檔案把預設的3306埠改成3307(自己根據自己的my.cnf修改,有些引數略過)。 
如:
[client]
port = 3307
socket = /tmp/mysql3307.sock


[mysqld]
port = 3307
socket = /tmp/mysql3307.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/var3307

3、建立資料庫指定存放資料的目錄(注意組得修改為mysql,新增幾個加幾個,3306可以直接用現成var)
mkdir /usr/local/mysql/var3307

4、初始化資料庫
/usr/local/mysql/scripts/mysql_install_db --datadir=/usr/local/mysql/var3307/ --user=mysql --basedir=/usr/local/mysql 

5、啟動mysql,要指定.cnf檔案和目錄啟動

/usr/local/mysql/bin/mysqld_safe --defaults-extra-file=/etc/my3306.cnf --datadir=/usr/local/mysql/var --user=mysql &
/usr/local/mysql/bin/mysqld_safe --defaults-extra-file=/etc/my3307.cnf --datadir=/usr/local/mysql/var3307 --user=mysql & 

6、登陸mysql
mysql -S /tmp/mysq3307.sock //sock登入
mysql -uroot -p -h127.0.0.1 -P3307 //埠號登入

7、停止MYSQL,通過對應的sock檔案。

/usr/local/mysql/bin/mysqladmin -uroot -S /tmp/mysql3307.sock shutdown

至此,可以告一段落。但是這樣有個苦惱,就是隨著埠號的增加,管理起來會很繁瑣,於是mysqld_multi登場。放棄之前的做法。

1、首先配置my.cnf(這裡省略了很多引數,mysqld1和mysqld2的引數用和之前mysqld的引數一樣,只放出修改的部分,mysqld_multi是新增,使用者名稱和密碼兩個資料庫得一樣)
[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
password   = my_password

[mysqld1]
port            = 3306
socket          = /tmp/mysql.sock1
datadir = /usr/local/mysql/var
log=/usr/local/mysql/log/mysql.log

innodb_data_home_dir = /usr/local/mysql/var
innodb_log_group_home_dir = /usr/local/mysql/var

[mysqld2]
port            = 3307
socket          = /tmp/mysql.sock2
datadir = /usr/local/mysql/var3307
log=/usr/local/mysql/log/mysql3307.log

innodb_data_home_dir = /usr/local/mysql/var3307
innodb_log_group_home_dir = /usr/local/mysql/var3307

2、初始化資料庫目錄(同上)
/usr/local/mysql/scripts/mysql_install_db --datadir=/usr/local/mysql/var3307/ --user=mysql --basedir=/usr/local/mysql 

3、啟動多例項:
/usr/local/mysql/bin/mysqld_multi start 1-2 //啟動1和2
/usr/local/mysql/bin/mysqld_multi start 1 //只啟動1
可以 netstat -anp | grep mysql 檢視mysql啟動的埠。

4、登陸mysql(同上)
mysql -S /tmp/mysql.sock1 //sock登入
mysql -uroot -p -h127.0.0.1 -P3307 //埠號登入

5、停止MYSQL
/usr/local/mysql/bin/mysqld_multi stop 1-2 //停止1和2
/usr/local/mysql/bin/mysqld_multi stop 1 //只停止1

全文完。