mysql多執行個體,每個執行個體的datadir,pid,port,socket應該是不同的
一、基礎,很重要
每個執行個體應該在自己的datadir下配置my.cnf檔案。
首先說下設定檔的尋找順序
第一搜,首先讀取/etc/my.cnf
第二搜,$datadir/my.cnf,在data目錄下尋找此設定檔,每個執行個體應該在自己的datadir下配置my.cnf檔案。
第三搜,defaultfile=/path/my.cnf 通常寫在命令列上,mysqld_safe defaultfile=/tmp/my.cnf &等執行。
第四搜,~/my.cnf 目前使用者下的設定檔。
二、為各個執行個體配置datadir(例子中利用預設執行個體資料)
停掉mysql預設的服務(防止出現損壞預設執行個體資料庫的情況):service mysql
stop
複製datadir
[root@localhost lib]# cp -r mysql /var/lib/mysql_3301
[root@localhost lib]# cp -r mysql /var/lib/mysql_3302
把mysql設定為owner
[root@localhost lib]# chown -R mysql.mysql mysql_3301
[root@localhost lib]# chown -R mysql.mysql mysql_3302
把mysql設定為檔案夾內檔案的owner
[root@localhost lib]# cd mysql_3301
[root@localhost mysql_3301]# chown -R mysql.mysql *
[root@localhost mysql_3301]# cd ../mysql_3302
[root@localhost mysql_3302]# chown -R mysql.mysql *
注釋:
開始失敗的原因在於mysql_3301與mysql_3302檔案夾下的檔案沒有賦權於mysql用
戶,導致錯誤
cd mysql_3301
chown -R mysql.mysql *
cd ../mysql_3302
chown -R mysql.mysql *
三、設定檔選項:
[root@localhost mysql_3302]# cd /usr/local
[root@localhost local]# vi my_multi.cnf
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = root
[mysqld1]
socket = /tmp/mysql_3301.sock
port = 3301
pid-file = /var/lib/mysql_3301/hostname.pid
datadir = /var/lib/mysql_3301/
log = /var/lib/mysql_3301/hostname.log
user = mysql
[mysqld2]
socket = /tmp/mysql_3302.sock
port = 3302
pid-file = /var/lib/mysql_3302/hostname.pid
datadir = /var/lib/mysql_3302/
log = /var/lib/mysql_3302/hostname.log
user = mysql