首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

雙 MySQL 實例啟停腳本實戰:5.5 與 5.6 共存管理最佳實踐

     編輯:MySQL 綜合教學

場景背景

單機部署多個 MySQL 版本(如 5.5 與 5.6)時,需獨立管理各實例的啟動、停止與狀態檢測。以下腳本採用端口檢測進程 PID,避免誤殺,並提供彩色狀態輸出,適合生產環境納入監控或手動運維。

目錄約定

  • MySQL 5.5:安裝路徑 /usr/local/mysql5,端口 3306,配置文件 /etc/my.cnf
  • MySQL 5.6:安裝路徑 /usr/local/mysql,端口 3307,配置文件 /etc/my6.cnf

一、啟動腳本

MySQL 5.5 啟動 (start_mysql55.sh)

#!/bin/bash
# author: Wang Xiaoqiang
# func: Start MySQL 5.5

# 檢測 3306 端口是否已被佔用
pid=$(netstat -lnpt | awk -F '[ /]+' '/3306/ {print $7}')
if [ -n "$pid" ]; then
    echo -e "\e[1;31mMySQL 5.5 Is Running... (PID: $pid)\e[0m"
    exit 0
fi

# 啟動實例
/usr/local/mysql5/bin/mysqld_safe --defaults-file=/etc/my.cnf >/dev/null 2>&1 &

# 結果判斷
if [ $? -eq 0 ]; then
    echo -e "\e[1;32mMySQL 5.5 Start Success.\e[0m"
else
    echo -e "\e[1;31mMySQL 5.5 Start Failed.\e[0m"
fi

MySQL 5.6 啟動 (start_mysql56.sh)

#!/bin/bash
# author: Wang Xiaoqiang
# func: Start MySQL 5.6

pid=$(netstat -lnpt | awk -F '[ /]+' '/3307/ {print $7}')
if [ -n "$pid" ]; then
    echo -e "\e[1;31mMySQL 5.6 Is Running... (PID: $pid)\e[0m"
    exit 0
fi

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my6.cnf >/dev/null 2>&1 &

if [ $? -eq 0 ]; then
    echo -e "\e[1;32mMySQL 5.6 Start Success.\e[0m"
else
    echo -e "\e[1;31mMySQL 5.6 Start Failed.\e[0m"
fi

二、停止腳本

MySQL 5.5 停止 (stop_mysql55.sh)

#!/bin/bash
# author: Wang Xiaoqiang
# func: Stop MySQL 5.5

pid=$(netstat -lnpt | awk -F '[ /]+' '/3306/ {print $7}')
if [ -z "$pid" ]; then
    echo -e "\e[1;31mMySQL 5.5 Is Not Running...\e[0m"
    exit 0
fi

kill $pid >/dev/null 2>&1

# 再次檢測確認進程是否已退出
if [ -z "$(netstat -lnpt | awk -F '[ /]+' '/3306/ {print $7}')" ]; then
    echo -e "\e[1;32mMySQL 5.5 Stop Success.\e[0m"
else
    echo -e "\e[1;31mMySQL 5.5 Stop Failed.\e[0m"
fi

MySQL 5.6 停止 (stop_mysql56.sh)

#!/bin/bash
# author: Wang Xiaoqiang
# func: Stop MySQL 5.6

pid=$(netstat -lnpt | awk -F '[ /]+' '/3307/ {print $7}')
if [ -z "$pid" ]; then
    echo -e "\e[1;31mMySQL 5.6 Is Not Running...\e[0m"
    exit 0
fi

kill $pid >/dev/null 2>&1

if [ -z "$(netstat -lnpt | awk -F '[ /]+' '/3307/ {print $7}')" ]; then
    echo -e "\e[1;32mMySQL 5.6 Stop Success.\e[0m"
else
    echo -e "\e[1;31mMySQL 5.6 Stop Failed.\e[0m"
fi

三、使用建議與擴展

  1. 權限設置:chmod +x start_mysql55.sh stop_mysql55.sh start_mysql56.sh stop_mysql56.sh
  2. 納入系統服務:可編寫 Systemd Unit 文件,實現 systemctl start mysql55 統一管理。
  3. 健康檢查增強:啟動後補充 mysqladmin ping 驗證服務真正就緒,而非僅端口監聽。
  4. 日誌輸出:生產環境建議將啟停日誌重定向至 /var/log/mysql/ 便於審計。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved