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

Linux 下 MySQL 版本升級指南:舊版移除與新版安裝標準流程

     編輯:MySQL 資料庫相關知識

升級前核心原則

MySQL 版本升級的關鍵在於徹底清除舊版殘留,避免庫檔案衝突、配置遺留導致新版啟動異常。本文提供基於 RPM 套件管理的標準化流程,適用於 RHEL/CentOS/Fedora 等系統。

步驟 1:檢測現有安裝

rpm -qa | grep -i mysql
# 輸出範例:
# mysql-server-3.23.54a-11
# mysql-devel-3.23.54a-11
# mysql-client-3.23.54a-11

記錄所有相關套件名稱,便於批次移除。

步驟 2:強制移除 RPM 套件 (忽略相依性)

rpm -e --nodeps mysql-server mysql-devel mysql-client
# 或一次性移除所有匹配套件
rpm -qa | grep -i mysql | xargs rpm -e --nodeps

警告:--nodeps 會跳過相依性檢查,確保無其他套件依賴 MySQL 庫檔 (如 PHP mysql 模組) 再執行。生產環境建議先停用相關服務。

步驟 3:清除殘留檔案與目錄

# 刪除庫檔與頭文件
rm -rf /usr/lib/mysql
rm -rf /usr/include/mysql

# 刪除資料目錄 (若不需保留舊資料)
# rm -rf /var/lib/mysql

# 刪除配置檔
rm -f /etc/my.cnf
rm -f /etc/mysql/my.cnf

# 刪除啟動腳本
rm -f /etc/init.d/mysql
rm -f /etc/rc.d/init.d/mysql

步驟 4:驗證清理乾淨

rpm -qa | grep -i mysql   # 應無輸出
ls /usr/lib/mysql         # 應報 No such file
ls /usr/include/mysql     # 應報 No such file
which mysql               # 應無輸出或指向新版路徑

步驟 5:安裝新版 MySQL (推薦官方 RPM/YUM 方式)

方式 A:官方 YUM Repository (推薦,自動解決相依)

# 1. 安裝官方 repo
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

# 2. 選擇版本 (預設最新 GA,可切換)
yum repolist enabled | grep mysql
# yum-config-manager --disable mysql80-community
# yum-config-manager --enable mysql57-community

# 3. 安裝
yum install mysql-community-server mysql-community-client mysql-community-devel

方式 B:手動下載 RPM 套件安裝

# 下載對應版本 RPM 套件組
wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.7.44-1.el7.x86_64.rpm-bundle.tar
tar xf MySQL-*.rpm-bundle.tar

# 按相依順序安裝
rpm -ivh mysql-community-common-*.rpm
rpm -ivh mysql-community-libs-*.rpm
rpm -ivh mysql-community-client-*.rpm
rpm -ivh mysql-community-server-*.rpm
rpm -ivh mysql-community-devel-*.rpm

步驟 6:初始化與安全配置

# 初始化資料目錄 (MySQL 5.7+)
mysqld --initialize --user=mysql
# 或 --initialize-insecure (無隨機 root 密碼)

# 啟動服務
systemctl start mysqld
systemctl enable mysqld

# 取得暫時 root 密碼 (5.7+)
grep 'temporary password' /var/log/mysqld.log

# 安全強化向導
mysql_secure_installation
# 設定 root 密碼、移除匿名帳號、禁止 root 遠端登入、移除 test 資料庫

步驟 7:遷移舊資料 (如有備份)

# 從舊版匯出 (若舊版仍可啟動)
mysqldump -u root -p --all-databases --routines --triggers --single-transaction > /backup/full_$(date +%F).sql

# 匯入新版
mysql -u root -p < /backup/full_2024-01-15.sql

# 升級系統表
mysql_upgrade -u root -p

常見問題與解決

問題原因解決
啟動失敗:libmysqlclient.so not found舊版庫檔殘留或路徑錯誤執行 ldconfig、檢查 /etc/ld.so.conf.d/mysql.conf
升級後資料表損壞跨大版本直接複製 data 目錄必須用 mysqldump 邏輯備份還原,不可物理複製
字符集亂碼舊版 latin1、新版 utf8mb4匯出時指定 --default-character-set=latin1,匯入後轉換
權限表缺失未執行 mysql_upgrade執行 mysql_upgrade -u root -p

最佳實踐清單

  • ✅ 升級前完整邏輯備份 (mysqldump)
  • ✅ 測試環境先行驗證遷移腳本與應用相容性
  • ✅ 記錄舊版配置參數 (SHOW VARIABLES),新版對應調整
  • ✅ 升級後執行 ANALYZE TABLE 更新統計資訊
  • ✅ 監控錯誤日誌與慢查詢日誌至少 48 小時
  • ✅ 準備回滾方案 (保留舊版 RPM、備份檔、配置檔)

現代化替代:容器化部署

新專案建議直接使用 Docker/Podman:

docker run -d \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=StrongPassw0rd! \
  -v /data/mysql:/var/lib/mysql \
  -p 3306:3306 \
  mysql:8.0

版本升級僅需修改映像標籤、重建容器,資料卷掛載分離確保資料安全,消除庫衝突與環境污染。

總結

MySQL 版本升級核心在於乾淨移除舊版 → 官方源安裝新版 → 邏輯備份還原 → 系統表升級 → 全面驗證。RPM 系統下務必使用 --nodeps 徹底清理,避免殘留檔案干擾。生產環境嚴禁跨大版本物理複製資料目錄,容器化部署可從根本上簡化升級運維。

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