MySQL 在 Linux 上提供多種啟停方式,各有適用場景與底層機制差異。本文基於 MySQL 5.6 實測,系統梳理六種主流方式。
| 方式 | 類型 | 適用場景 | 底層機制 |
|---|---|---|---|
mysqld | 核心守護進程 | 調試、特殊參數啟動 | 直接執行服務端程式 |
mysqld_safe | 安全啟動腳本 | 生產環境推薦 | 監控進程、自動重啟、日誌導向 |
mysql.server | SysV 初始化腳本 | 系統服務管理 | 調用 mysqld_safe |
mysqld_multi | 多實例管理工具 | 單機多實例 | 讀取 [mysqldN] 組別配置 |
service mysql | 系統服務命令 | 標準運維操作 | 調用 /etc/init.d/mysql |
/etc/init.d/mysql | 初始化腳本 | 手動服務控制 | 調用 mysqld_safe |
mysqladmin shutdown | 客戶端管理工具 | 遠程安全關閉 | 發送 SHUTDOWN 命令 |
# 位置差異 RPM 安裝:/usr/sbin/mysqld 二進制安裝:/bin/mysqld # 直接執行(需非 root 用戶) /usr/sbin/mysqld --user=mysql &
缺點:無進程監控、無自動重啟、root 執行受限、前台阻塞。
--defaults-file 指定配置mysql 用戶運行mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
[mysqld1] port=3306 datadir=/data/mysql1 socket=/tmp/mysql1.sock [mysqld2] port=3307 datadir=/data/mysql2 socket=/tmp/mysql2.sock
mysqld_multi start 1,2 mysqld_multi stop 1 mysqld_multi report
# SysV service mysql start|stop|restart|status # systemd (CentOS 7+/Ubuntu 16+) systemctl start|stop|restart|status mysqld
本質調用 /etc/init.d/mysql 或 systemd unit 檔。
mysqladmin -u root -p shutdown # 僅能關閉,不能啟動 # 可用於 Replica:mysqladmin stop-slave / start-slave
systemctl/service)或 mysql.servermysqld_multi + 系統服務模板化mysqld_safe 前台運行觀察日誌mysqladmin shutdown 實現優雅關閉