從最基礎的 mysqld 到生產級的 mysqld_multi 多實例管理,掌握四種啟動方式的適用場景、配置差異與客戶端連接方法。
最原始啟動,前台運行,調試用。
# 啟動 ./mysqld --defaults-file=/etc/my.cnf --user=root # 客戶端連接 mysql --defaults-file=/etc/my.cnf # 或指定 socket mysql -S /tmp/mysql.sock
⚠️ 關閉終端即停止,**不適合生產**。
Shell 腳本封裝,提供:
- 自動重啟(崩潰拉起)
- 錯誤日志重定向
- 核心文件生成控制
# 啟動(後台) ./mysqld_safe --defaults-file=/etc/my.cnf --user=root & # 客戶端連接同 mysqld
✅ 生產環境單實例標準啟動方式。
標準服務管理,支援 service/chkconfig。
# 安裝為服務
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/
chkconfig --add mysql.server
# 管理
service mysql.server {start|stop|restart|status}
# 開機自啟
chkconfig mysql.server on
✅ 單實例生產環境服務化管理首選。
一個配置文件管多個實例(不同端口、datadir、socket)。
# 配置片段 /etc/my.cnf [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin user = mysqladmin password = mysqladmin [mysqld3306] port = 3306 socket = /tmp/mysql3306.sock datadir = /usr/local/mysql/data [mysqld3307] port = 3307 socket = /tmp/mysql3307.sock datadir = /usr/local/mysql/data2
授權管理帳號:
GRANT SHUTDOWN ON *.* TO 'mysqladmin'@'localhost' IDENTIFIED BY 'mysqladmin' WITH GRANT OPTION;
操作:
# 啟動 3306-3307 ./mysqld_multi --defaults-file=/etc/my.cnf start 3306-3307 # 停止 mysqladmin -S /tmp/mysql3306.sock shutdown
✅ 多實例部署標準工具。
| 方式 | 適用場景 | 守護進程 | 服務管理 | 多實例 |
|---|---|---|---|---|
| mysqld | 調試、臨時測試 | ❌ | ❌ | ❌ |
| mysqld_safe | 單實例生產 | ✅ | 手動 | 手動配置 |
| mysql.server | 單實例生產(服務化) | ✅ | ✅ systemd/SysV | 手動配置 |
| mysqld_multi | 多實例生產 | ✅ | 統一管理 | ✅ 原生支援 |
mysql.server + systemd(CentOS 7+/Ubuntu 16+)mysqld_multi 或 Docker/K8s 容器化--defaults-file 顯式指定配置,避免讀錯 my.cnf--user=root,專用 mysql 用戶