首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 服務維護筆記(一):伺服器規劃、安裝配置、啟動腳本與多實例架構

     編輯:MySQL 資料庫相關知識

前言

高負載網站中,PHP 與 MySQL 同機運行是效能瓶頸。本文提出將 MySQL 獨立部署為專用資料庫伺服器的規劃、安裝、啟動/停止腳本設計、多實例隔離與備份恢復策略。

一、MySQL 伺服器規劃:程式與資料分離

為利維護、升級、備份與資料安全,**程式檔案與資料檔案應放在不同實體硬碟**:

硬碟1 (系統/程式)          硬碟2 (資料/應用)
/
├── /usr                    <-- 作業系統
├── /home/mysql             <-- MySQL 主目錄 (指向最新版本的符號連結)
│   ├── /home/mysql-3.23.54/   <-- 最新版本
│   └── /home/mysql-old/       <-- 舊版本備份
/
└── /data/app_1/            <-- 應用1 資料與啟動腳本
    ├── /data/app_2/        <-- 應用2
    └── /data/app_3/        <-- 應用3

二、MySQL 安裝與編譯參數建議

  • 使用當前 **STABLE 穩定版**。
  • 避免使用 --with-charset=:僅影響排序規則,卻增加資料遷移複雜度。
  • 避免使用 InnoDB(早期版本):除非需要外鍵/交易,否則 MyISAM 效能優勢明顯(數量級差距)。
  • 編譯指令:
./configure --prefix=/home/mysql --without-innodb
make
make install

三、服務啟動與停止腳本設計

1. 複製預設資料目錄

cp -r mysql/var/mysql /data/app_1/

2. 啟動腳本:start_mysql.sh

#!/bin/sh
rundir=`dirname "$0"`
echo "$rundir"
/home/mysql/bin/safe_mysqld \
  --user=mysql \
  --pid-file="$rundir"/mysql.pid \
  --socket="$rundir"/mysql.sock \
  --datadir="$rundir"/var \
  -O max_connections=500 \
  -O wait_timeout=600 \
  -O key_buffer=32M \
  --port=3402 \
  "$@" &

關鍵參數解析

參數用途
--pid-file / --socket / --datadir將 PID、Socket、資料檔集中在應用目錄,避免多實例衝突
-O 參數全域變數優化(連線數、逾時、索引緩衝)
--port不同應用用不同 Port 隔離,單一服務連線數是主要瓶頸

3. 註冊開機自啟(rc.local)

/data/app_1/start_mysql.sh
/data/app_2/start_mysql.sh
/data/app_3/start_mysql.sh

4. 停止腳本:stop_mysql.sh

#!/bin/sh
rundir=`dirname "$0"`
echo "$rundir"
/home/mysql/bin/mysqladmin -u mysql -S"$rundir"/mysql.sock shutdown

四、此架構優勢

  1. 多實例隔離: 每個應用獨立 Port、資料目錄、Socket、PID,互不干擾。
  2. 避免 /tmp 衝突: Socket/PID 不放在 /tmp,防止被誤刪。
  3. 硬體故障快速恢復: 硬碟1 壞時,將硬碟2 掛載到新主機,加入啟動腳本即可秒級恢復(無需改 my.cnf)。
  4. 獨立打包部署: 單一目錄包含資料與腳本,便於遷移。

五、啟動後目錄結構

/data/app_1/
├── start_mysql.sh
├── stop_mysql.sh
├── mysql.pid
├── mysql.sock
└── var/
    ├── mysql/           <-- 系統庫
    ├── app_1_db_1/      <-- 應用庫
    └── app_1_db_2/

小結

「程式資料分離、多實例隔離、腳本化管理」是高可用 MySQL 架構的三大支柱。下篇將深入備份策略、災難恢復與應用層優化設計。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved