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

OneinStack MySQL/MariaDB/Percona 同主版本升級腳本深度解析

     編輯:MySQL 綜合教學

OneinStack MySQL/MariaDB/Percona 同主版本升級腳本深度解析

OneinStack 內建 upgrade_db.sh 提供生產級資料庫就地升級能力,嚴格限制同主版本(如 5.6.25→5.6.26、10.0.20→10.0.21),禁止跨大版本或跨分支(MySQL↔MariaDB↔Percona),保障兼容性。本文解析腳本核心邏輯、使用前提、操作流程與關鍵參數。

一、使用前提與限制

  • ✅ 同主版本小版本升級(5.5.x→5.5.y、5.6.x→5.6.y、10.0.x→10.0.y)
  • ❌ 跨大版本(5.5→5.6、5.6→5.7、10.0→10.1)
  • ❌ 跨分支(MySQL→Percona、MariaDB→MySQL)
  • ⚠️ 升級前必備份,腳本會自動 mysqldump --all-databases。

二、OneinStack / lnmp 一鍵包升級流程

# 1. 備份舊版配置
cp oneinstack/options.conf ./

# 2. 刪除舊版代碼目錄
rm -rf oneinstack

# 3. 下載最新版
wget https://mirrors.linuxeye.com/oneinstack-full.tar.gz
tar xzf oneinstack-full.tar.gz

# 4. 還原配置(必須用舊版 options.conf)
mv options.conf ./oneinstack

# 5. 進入目錄執行升級
cd oneinstack
./upgrade db

三、upgrade_db.sh 核心邏輯解析

  1. 識別當前資料庫類型與版本:解析 mysql -V 輸出,判斷 MySQL/MariaDB/Percona 及版本號。
  2. 驗證 Root 密碼:交互式輸入或讀取 options.conf,失敗重試。
  3. 全量備份:mysqldump -uroot -p$pwd --opt --all-databases > DB_all_backup_$(date +%Y%m%d).sql
  4. 交互式輸入目標版本:校驗主版本號一致(如 5.6.x)。
  5. 下載對應源碼包:
    • MariaDB:阿里云鏡像 / 官網,按 glibc 版本選擇 linux 或 linux-glibc_214。
    • Percona:官網 LATEST 源碼包。
    • MySQL:CDN 下載對應主版本目錄。
  6. 編譯安裝新版:
    • 停服務 → 重命名舊目錄 {_old_日期} → 解壓/編譯/安裝新版 → 初始化數據目錄 mysql_install_db → 啟動服務 → 導入備份 SQL → 重啟 → 清理 test 库、reset master。
    • 編譯參數統一:InnoDB、Partition、Federated、Blackhole、Archive、MyISAM、SSL、utf8mb4、Jemalloc/Tcmalloc 支援。
  7. 成功標誌:You have successfully upgrade from X to Y。

四、關鍵細節與避坑

  • glibc 版本檢測:MariaDB 二進制包分 linux (glibc < 2.14) 和 linux-glibc_214,腳本自動判斷。
  • 內存分配器優化:檢測 libjemalloc.so / libtcmalloc.so,自動注入 LD_PRELOAD 到 mysqld_safe。
  • 權限收斂:升級後自動 DROP DATABASE test; RESET MASTER;。
  • 手動干預場景:若自動下載失敗,可預先放置源碼包至 src/ 目錄。

OneinStack 升級腳本將複雜的編譯安裝、備份遷移、參數遞移封裝為標準化流程,嚴格的版本檢查機制有效規避兼容性風險,是中小團隊資料庫版本管理的利器。

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