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

MySQL 專用資料庫伺服器架構規劃與運維自動化實踐

     編輯:MySQL 資料庫相關知識

硬體與目錄規劃:分離程式與資料


硬碟 1 (系統盤)          硬碟 2 (資料盤)
/                        /data/app_1/
  |-- /usr               |-- /data/app_2/
  |-- /home/mysql  --> /home/mysql-3.23.54/   # 軟連結指向最新版
  |-- /home/mysql-3.23.54/                   # 當前版本
  |-- /home/mysql-old/                     # 舊版回滾備份

核心原則: MySQL 程式碼、配置、日誌在系統盤;資料目錄、socket、pid、備份腳本在資料盤。硬碟故障時,只需將資料盤掛載到新伺服器,啟動腳本加入 rc.local 即可秒級恢復服務。

編譯安裝最佳實踐

./configure \
  --prefix=/home/mysql \
  --without-innodb \          # 不需要事務時關閉,效能提升數量級
  --with-charset=utf8mb4 \    # 避免 latin1 遷移亂碼坑
  --enable-thread-safe-client
make && make install

多實例啟動腳本範本(支援多 PORT 隔離)

#!/bin/bash
# /data/app_1/start_mysql.sh
rundir=$(dirname "$0")
/home/mysql/bin/mysqld_safe \
  --user=mysql \
  --pid-file="$rundir/mysql.pid" \
  --socket="$rundir/mysql.sock" \
  --datadir="$rundir/var" \
  --port=3402 \
  -O max_connections=500 \
  -O wait_timeout=600 \
  -O key_buffer=32M \
  &

# rc.local 多實例啟動
/data/app_1/start_mysql.sh
/data/app_2/start_mysql.sh
/data/app_3/start_mysql.sh

優勢: 每實例獨立 port、socket、pid、datadir,互不干擾;單實例 CPU > 10% 即考慮拆分到新 port。

停止腳本

#!/bin/bash
# /data/app_1/stop_mysql.sh
rundir=$(dirname "$0")
/home/mysql/bin/mysqladmin -u mysql -S"$rundir/mysql.sock" shutdown

備份策略:邏輯備份 + 壓縮 + 輪循

# /usr/local/mysql/bin/mysqldump -S /data/app_1/mysql.sock -u backup_user db_name | gzip -c > /backup/db_name.$(date +\%w).dump.gz
  • date +\%w:0~6 代表週日~週六,自動輪循 7 份。
  • 排程在 crontab:15 4 * * * /backup/script.sh(凌晨 4:15,負載最低)。
  • 遠程備份:將 -S socket 改為 -h remote_ip 即可。

災難恢復與升級

監控關鍵指標

  • Threads_connected / max_connections > 80% → 擴容或拆實例。
  • Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests > 1% → 擴大 buffer_pool。
  • Slow_queries 成長 → 分析慢查詢日誌。
  • 磁碟剩餘 < 20% → 清理舊備份/Binlog 或擴容。

總結

專用 MySQL 伺服器的核心在於 程式資料分離、多實例隔離、標準化啟停腳本、自動化備份輪循、秒級災難恢復流程。將這些固化為腳本與 SOP,才能在硬體故障、流量暴增、版本升級時從容應對。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景操作
系統盤壞、資料盤完好新裝 OS + MySQL 同版本,掛載資料盤,加入啟動腳本 → 服務恢復
資料損壞(誤刪/誤更新)確定時間點 → 最近備份還原 → Binlog 重放(PITR)
MySQL 版本升級新版本安裝到 /home/mysql-new,修改軟連結 /home/mysql -> 新版,重啟實例