方案一:mysqld_multi 統一管理多實例 (推薦)
1. 常規安裝首個實例
chown -R root .
chown -R mysql data
chgrp -R mysql .
cp support-files/my-small.cnf /etc/my5122.cnf
scripts/mysql_install_db --basedir=/usr/local/mysql5122/ --datadir=/usr/local/mysql5122/data/ --user=mysql
bin/mysqld_safe --defaults-file=/etc/my5122.cnf &
bin/mysql -uroot -p -S/tmp/mysql5122.sock
2. 授權 mysqld_multi 關機權限
GRANT SHUTDOWN ON *.* TO multi_admin@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
3. 停止服務並複製元數據目錄
mysqladmin -uroot -p -S/tmp/mysql5122.sock shutdown
cp -r data data2
mv data data1
chown -R mysql data2
chgrp -R mysql .
4. mysqld_multi 配置檔範例
[mysqld_multi]
mysqld = /usr/local/mysql5122/bin/mysqld_safe
mysqladmin = /usr/local/mysql5122/bin/mysqladmin
user = multi_admin
password = 123456
[mysqld1]
socket = /tmp/mysql1.sock
port = 3307
pid-file = /usr/local/mysql5122/data1/david_yeung.pid1
datadir = /usr/local/mysql5122/data1
language = /usr/local/mysql5122/share/mysql/english
user = mysql
[mysqld2]
port = 3308
socket = /tmp/mysql2.sock
pid-file = /usr/local/mysql5122/data2/david_yeung.pid2
datadir = /usr/local/mysql5122/data2
language = /usr/local/mysql5122/share/mysql/english
user = mysql
5. 啟動雙實例並驗證
/usr/local/mysql5122/bin/mysqld_multi --config-file=/etc/my5122.cnf start 1-2
netstat -an | grep 3307 # LISTEN
netstat -an | grep 3308 # LISTEN
mysql -uroot -p -S/tmp/mysql1.sock # 連線實例 1
mysql -uroot -p -S/tmp/mysql2.sock # 連線實例 2
方案二:獨立配置檔獨立啟動 (簡單場景)
# 安裝第二實例
chown -R root .
chown -R mysql data
chgrp -R mysql .
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql512/ --datadir=/usr/local/mysql512/data/
cp support-files/my-huge.cnf /etc/my512.cnf
# 修改 my512.cnf port=3308, socket=/tmp/mysql512.sock, basedir/datadir 指向 mysql512
/usr/local/mysql512/bin/mysqld_safe --defaults-file=/etc/my512.cnf &
mysql -uroot -p -S/tmp/mysql512.sock
netstat -an | grep 3308 # 確認運行
# 寫入啟動腳本實現開機自啟