多實例隔離三要素:不同 TCP 端口、不同 Unix Socket 文件、不同數據目錄。配置文件 [mysqld] 區塊分別設置。
./configure --with-tcp-port=3307 \
--with-unix-socket=/tmp/mysql2.sock \
--prefix=/usr/local/mysql-3307
--prefix 指定獨立安裝目錄,避免二進制/庫文件衝突。同一安裝包,啟動時指定參數:
# 實例 1(默認)
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3306.cnf &
# 實例 2
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf &
/etc/my3307.cnf
[mysqld]
port = 3307
socket = /tmp/mysql3307.sock
datadir = /data/mysql3307
pid-file = /data/mysql3307/mysqld.pid
log-error = /data/mysql3307/error.log
basedir = /usr/local/mysql
user = mysql
server-id = 2
# 其他獨立參數...
mkdir -p /data/mysql3307
chown -R mysql:mysql /data/mysql3307
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my3307.cnf --user=mysql
# 複製服務單元
cp /usr/lib/systemd/system/mysqld.service /etc/systemd/system/mysqld@.service
# 編輯 mysqld@.service,EnvironmentFile=-/etc/sysconfig/mysql-%i
# 創建 /etc/sysconfig/mysql-3307 指向 my3307.cnf
systemctl daemon-reload
systemctl start mysqld@3307
systemctl enable mysqld@3307
mysql -u root -p -P 3307 -h 127.0.0.1 --protocol=TCP
mysql -u root -p -S /tmp/mysql3307.sock
server-id。innodb_buffer_pool_size 等)總和 < 物理內存 70%。