| 方式 | 適用場景 | 特點 |
直接呼叫 mysqld | 測試/除錯 | 最原始,不推薦生產 |
mysqld_safe | BSD 風格系統 | 監控進程、自動重啟、錯誤日誌導向 |
mysql.server (System V) | Linux/RedHat/CentOS | 標準服務管理、支援 start/stop、整合 chkconfig |
System V 啟動腳本安裝
cp mysql.server /etc/rc.d/init.d/mysqld
chmod 500 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
啟動參數配置
優先使用 /etc/my.cnf 全域選項檔:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
port=3306
環境變數(如時區)需修改 mysqld_safe:
TZ=Asia/Taipei
export TZ
啟動前檢查表
# 加入啟動腳本 mysqld_safe 前
myisamchk --silent --force --fast /var/lib/mysql/*/*.MYI
isamchk --silent --force --fast /var/lib/mysql/*/*.ISM
停止服務
# 手動
mysqladmin -u root -p shutdown
# System V
service mysqld stop
# 或
/etc/rc.d/init.d/mysqld stop
失去控制權的緊急恢復
- 找出 PID:
ps aux | grep mysqld 或看 .pid 檔
- 優雅終止:
kill -TERM
- 強制終止(最後手段):
kill -9 → 後續必跑 myisamchk -r
- 跳過授權表啟動:
mysqld --skip-grant-tables --user=mysql &
- 登入修改密碼:
UPDATE mysql.user SET Password=PASSWORD('new') WHERE User='root'; FLUSH PRIVILEGES;
- 重啟正常服務
多實例運行架構
- 不同版本:分目錄安裝,
--prefix=/usr/local/mysql-
- 同版本多實例:共用二進制,獨立
datadir、port、socket、pid-file、my.cnf
多實例 my.cnf 範例
# /etc/my.cnf 全域共用
[mysqld]
user=mysql
# /data/mysql3306/my.cnf
[mysqld]
datadir=/data/mysql3306
port=3306
socket=/data/mysql3306/mysql.sock
pid-file=/data/mysql3306/mysql.pid
# /data/mysql3307/my.cnf
[mysqld]
datadir=/data/mysql3307
port=3307
socket=/data/mysql3307/mysql.sock
pid-file=/data/mysql3307/mysql.pid
多實例啟動腳本
#!/bin/bash
# start_multi.sh
for cnf in /data/mysql*/my.cnf; do
mysqld_safe --defaults-file=$cnf &
done
停止同理迴圈送 mysqladmin --defaults-file=$cnf shutdown。
- 上一篇文章: MySQL 4.1 字元集亂碼終極解決方案:GBK/UTF-8 混存正確顯示
- 下一篇文章: MySQL 跨平台效能基準測試對比:Linux vs Windows vs Solaris
Copyright ©
程式碼之家 All Rights Reserved