為了便於後期維護、升級、備份以及保障數據安全,強烈建議將 MySQL 程序文件與數據文件安裝在不同的物理硬件上。推薦的目錄結構佈局如下:
硬盤 1 硬盤 2 ├── /usr ├── /data/app_1/ (應用數據、啟動腳本) ├── /home/mysql ├── /data/app_2/ │ └── (指向最新版本的鏈接) ├── /data/app_3/ ├── /home/mysql-3.23.54/ (最新版本 MySQL) └── /home/mysql-old/ (舊版本備份)
採用符號鏈接 /home/mysql → /home/mysql-3.23.54/ 可實現無縫版本切換與回滾。
生產環境應優先選擇當前 STABLE(穩定版) 版本,避免使用開發版或過舊版本。
./configure --prefix=/home/mysql --without-innodb make make install
--with-charset:僅在按字母排序時有用,會給數據遷移帶來麻煩。將預設的 mysql/var/mysql 複製到 /data/app_1/ 目錄下。
start_mysql.sh#!/bin/sh rundir=`dirname "$0"` exec "$rundir"/home/mysql/bin/safe_mysqld \ --user=mysql \ --pid-file="$rundir"/mysql.pid \ --datadir="$rundir"/var \ --port=3402 \ --socket="$rundir"/mysql.sock \ -O max_connections=500 \ -O wait_timeout=600 \ -O key_buffer=32M &
--pid-file、--socket、--datadir:將進程 ID、套接字、數據文件集中放在應用目錄下,避免多實例衝突、被誤刪(如放在 /tmp)-O 後接全局優化參數:需根據具體業務調整--port:不同應用用不同端口隔離,解決連接數瓶頸在 rc.local 中加入完整路徑:
/data/app_1/start_mysql.sh /data/app_2/start_mysql.sh /data/app_3/start_mysql.sh
stop_mysql.sh#!/bin/sh rundir=`dirname "$0"` exec "$rundir"/home/mysql/bin/mysqladmin \ -u mysql \ -S "$rundir"/mysql.sock shutdown
--port 即可啟動多服務,各目錄獨立可打包遷移/data/app_x/,避免 /tmp 被其他程序誤刪