[mysqld#] 群組區分配置multi_admin 帳號(僅需 SHUTDOWN 權限)統一管理啟停[mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = multi_admin password = your_strong_password # 實例 2 [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /var/lib/mysql2/hostname.pid2 datadir = /var/lib/mysql2 language = /usr/share/mysql/english user = unix_user1 # 實例 3(指定專用 mysqld_safe 路徑) [mysqld3] mysqld = /path/to/mysqld_safe ledir = /path/to/mysqld-binary/ mysqladmin = /path/to/mysqladmin socket = /tmp/mysql.sock3 port = 3308 pid-file = /var/lib/mysql3/hostname.pid3 datadir = /var/lib/mysql3 language = /usr/share/mysql/swedish user = unix_user2 # 實例 4 [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /var/lib/mysql4/hostname.pid4 datadir = /var/lib/mysql4 language = /usr/share/mysql/estonia user = unix_user3 # 實例 6(編號可不連續,靈活擴展) [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /var/lib/mysql6/hostname.pid6 datadir = /var/lib/mysql6 language = /usr/share/mysql/japanese user = unix_user4
| 參數 | 用途 | 備註 |
|---|---|---|
mysqld | 啟動腳本路徑 | 建議用 mysqld_safe 以獲得自動重啟保護 |
ledir | mysqld 二進制目錄 | 僅 mysqld_safe 識別,直接傳給 mysqld 會報錯 |
datadir | 資料目錄 | 強烈不建議 多實例共用同一 datadir(效能、鎖衝突、損壞風險) |
port | TCP 埠 | 每實例唯一,防火牆同步放行 |
socket | Unix 域套接字 | 本地連線必須指定對應 socket |
pid-file | PID 檔案 | 每實例獨立,避免衝突 |
user | 運行使用者 | 若指定非 root 使用者,需以 root 執行 mysqld_multi |
GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'your_strong_password'; FLUSH PRIVILEGES;
需在所有受控實例執行上述授權。
# 啟動所有實例 mysqld_multi start # 啟動指定實例(2,4) mysqld_multi start 2,4 # 停止實例 3 mysqld_multi stop 3 # 查看狀態 mysqld_multi report
MySQL 發布包含 support-files/mysqld_multi.server.sh,可部署為 /etc/init.d/mysqld_multi 並加入 chkconfig 實現開機自啟。
data_source_name 對應不同 socket/port。