centos7中MySQL 5.7.32 到 5.7.44 升級指南:基于官方二進制包的原地替換式升級

目錄

  • 前言
  • 1. 升級概述
    • 1.1 升級背景
    • 1.2 升級目的
    • 1.3 升級方法概述
    • 1.4 升級策略與注意事項
  • 2. 升級準備
    • 2.1 備份工作
    • 2.2 下載目標版本
    • 2.3 停止 MySQL 服務
  • 3. 替換二進制文件
    • 3.1 解壓官方二進制包
    • 3.2 替換核心二進制文件
    • 3.3 更新共享庫
  • 4. 執行升級并驗證
    • 4.1 啟動 MySQL 服務
    • 4.2 監控錯誤日志
    • 4.3 執行 `mysql_upgrade`
    • 4.4 重啟 MySQL 服務
    • 4.5 驗證升級
  • 5. 回滾方案
    • 5.1 停止服務
    • 5.2 恢復舊的二進制文件
    • 5.3 啟動舊版本服務
    • 5.4 終極恢復
  • 6. 升級過程總結
  • 7. 總結

前言

在日常的數據庫運維工作中,MySQL 是我們最常接觸的數據庫之一。隨著業務的不斷發展和對性能的要求越來越高,及時升級 MySQL 到最新版本是非常必要的。通常,很多開發和運維人員都習慣通過包管理工具(如 YUM/DNF)安裝 MySQL,這樣雖然方便,但也帶來了版本更新時二進制文件分散的問題。

本篇文章將講解如何使用官方的 MySQL 二進制包進行版本升級,特別是針對通過 YUM/DNF 安裝的 MySQL 5.7.32 升級到 5.7.44 的場景。本文提供了詳細的操作步驟、注意事項以及回滾方案,幫助你順利完成 MySQL 的升級。

1. 升級概述

1.1 升級背景

對于通過YUM/DNF安裝的MySQL,其特點是

  • 沒有單一的“安裝目錄”。二進制文件、庫文件、配置文件等被分散安裝到系統的標準目錄中。
  • mysqld 二進制文件通常在 /usr/sbin/mysqld
  • 配置文件在 /etc/my.cnf/etc/my.cnf.d/
  • 數據文件在 /var/lib/mysql
  • 錯誤日志在 /var/log/mysqld.log

通過 YUM/DNF 安裝的 MySQL 版本會將 MySQL 的文件分散到多個系統目錄中,包括二進制文件、庫文件、配置文件和日志文件等。隨著 MySQL 版本的不斷發展,可能會出現某些功能和性能優化上的問題,導致用戶需要手動升級到新版本。在此場景下,我們采用“原地替換”的方式,將舊版本的二進制文件替換為官方二進制包中的新版本。

1.2 升級目的

  1. 修復安全漏洞

MySQL 5.7.32 可能存在一些已知的安全漏洞,升級到 5.7.44 可以修復這些漏洞,增強數據庫的安全性,防止潛在的攻擊。

  1. 提高性能和穩定性

新版本的 MySQL 通常包含了性能優化、bug 修復和一些系統級改進,有助于提升數據庫的響應速度和穩定性,尤其是在處理高并發、大數據量時。

  1. 兼容性和功能增強

通過升級,能夠享受新版本帶來的功能增強,比如更好的 JSON 支持、優化的查詢執行計劃、提升的備份和恢復功能等。

  1. 解決兼容性問題

升級后,可能修復了與其他軟件版本(如操作系統、應用程序等)的兼容性問題,避免由于版本差異導致的故障。

1.3 升級方法概述

本次升級的核心思想是用新版本的二進制包模擬集中式安裝,并覆蓋分散的舊版本二進制文件,保留原有配置和數據,使用系統原有的服務管理工具進行服務管理。我們將采用以下步驟來實現這一目標:

  • 備份舊數據
  • 解壓官方二進制包
  • 替換 MySQL 二進制文件
  • 啟動新版本并完成升級

1.4 升級策略與注意事項

策略:我們將解壓官方二進制包,并將其主要文件手動覆蓋到系統對應的分散目錄中(如 /usr/bin, /usr/sbin),同時保留所有舊的配置文件、數據目錄和服務管理方式

重要警告

  1. 此操作不可逆:直接用新文件覆蓋舊文件,難以直接回滾到舊的RPM安裝狀態。因此,備份是絕對必要的
  2. 兼容性:5.7.32 -> 5.7.44 是小版本升級,極度平滑,此方法風險很低。
  3. 服務管理:升級后,你仍然使用 systemctl start mysqld 來管理服務,因為我們將保留原有的 systemd 服務單元文件。

2. 升級準備

2.1 備份工作

在進行任何升級之前,備份是不可忽視的關鍵步驟。備份工作不僅僅是為了防止數據丟失,也是為了確保升級過程中萬一出現問題時可以進行恢復。

  1. 邏輯備份(最重要的備份):使用 mysqldump 工具備份所有數據庫及相關設置。

    mysqldump -u root -p --port=2020 --all-databases --events --routines --triggers --master-data=2 > /opt/full_backup_before_upgrade.sql
    
  2. 物理備份(包括數據目錄和配置文件):

    systemctl stop mysqld
    tar -czvf /opt/mysql_data_backup.tar.gz /var/lib/mysql/
    tar -czvf /opt/mysql_config_backup.tar.gz /etc/my.cnf /etc/my.cnf.d/
    
  3. 備份舊的二進制文件(關鍵!用于回滾):

    mkdir /opt/mysql_old_bin_backup
    cp -p /usr/bin/mysql /usr/bin/mysqldump /usr/sbin/mysqld /opt/mysql_old_bin_backup/ 2>/dev/null || :
    
  4. 重新啟動 MySQL 服務

    systemctl start mysqld
    

2.2 下載目標版本

  1. 下載官方二進制包:你可以從 MySQL 官網https://downloads.mysql.com/archives/community/
    下載適合你操作系統的版本,這里我們以 5.7.44 為例。上傳并放到 /opt/ 目錄中。
    在這里插入圖片描述

    cd /opt
    wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
    

2.3 停止 MySQL 服務

為了替換二進制文件,我們需要停止 MySQL 服務:

systemctl stop mysqld

3. 替換二進制文件

3.1 解壓官方二進制包

在替換文件之前,首先解壓下載的官方二進制包:

tar -xzf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
cd mysql-5.7.44-linux-glibc2.12-x86_64

3.2 替換核心二進制文件

核心步驟是用新版本的二進制文件覆蓋系統中對應的舊版本文件。這里我們將逐個替換 MySQL 的二進制文件,以下是一些重要的文件:

  1. 替換 mysqld 守護進程

    cp -p ./bin/mysqld /usr/sbin/mysqld.new
    mv /usr/sbin/mysqld.new /usr/sbin/mysqld
    chmod 755 /usr/sbin/mysqld
    
  2. 替換 mysql 客戶端

    cp -p ./bin/mysql /usr/bin/mysql.new
    mv /usr/bin/mysql.new /usr/bin/mysql
    
  3. 替換 mysqldump 工具

    cp -p ./bin/mysqldump /usr/bin/mysqldump.new
    mv /usr/bin/mysqldump.new /usr/bin/mysqldump
    
  4. 替換 mysql_upgrade 工具

    cp -p ./bin/mysql_upgrade /usr/bin/mysql_upgrade.new
    mv /usr/bin/mysql_upgrade.new /usr/bin/mysql_upgrade
    
  5. 替換其他工具:你可以根據需要替換其他工具,如 mysqlcheck, mysqladmin 等。

    cp -p ./bin/mysqlcheck /usr/bin/mysqlcheck.new
    mv /usr/bin/mysqlcheck.new /usr/bin/mysqlcheck
    

3.3 更新共享庫

在某些情況下,你可能需要更新 MySQL 使用的共享庫。你可以將新的庫文件復制到系統目錄,確保 mysqld 可以找到它們。

cp -p ./lib/* /usr/lib64/mysql/ || :
cp -p ./lib/* /usr/lib64/

4. 執行升級并驗證

4.1 啟動 MySQL 服務

啟動 MySQL 服務,觸發新版本的 mysqld 自動檢測并升級數據字典:

systemctl start mysqld

4.2 監控錯誤日志

使用以下命令查看 MySQL 啟動日志,確認新版本是否成功啟動:

tail -f /var/log/mysqld.log

當看到類似 MySQL 5.7.44 的版本信息時,表示升級成功。

4.3 執行 mysql_upgrade

MySQL 5.7 版本要求執行 mysql_upgrade 來升級系統表結構:

mysql_upgrade -u root -p --port=2020

當最后顯示 OK 時,表示 mysql_upgrade 執行成功。

4.4 重啟 MySQL 服務

重啟 MySQL 服務,使 mysql_upgrade 的更改生效:

systemctl restart mysqld

4.5 驗證升級

通過以下命令驗證 MySQL 版本和數據庫狀態:

mysql -u root -p --port=2020 -e "SELECT VERSION();"
mysql -u root -p --port=2020 -e "SHOW DATABASES;"

在這里插入圖片描述

5. 回滾方案

如果升級過程中出現問題,我們可以通過回滾操作恢復到舊版本。

5.1 停止服務

首先停止 MySQL 服務:

systemctl stop mysqld

5.2 恢復舊的二進制文件

從備份中恢復舊版本的二進制文件:

cp -p /opt/mysql_old_bin_backup/mysqld /usr/sbin/
cp -p /opt/mysql_old_bin_backup/mysql /usr/bin/
cp -p /opt/mysql_old_bin_backup/mysqldump /usr/bin/

5.3 啟動舊版本服務

恢復后,可以啟動原來的 5.7.32 版本:

systemctl start mysqld

5.4 終極恢復

如果二進制回滾后仍無法啟動,可以使用物理備份恢復數據:

systemctl stop mysqld
rm -rf /var/lib/mysql/*
tar -xzf /opt/mysql_data_backup.tar.gz -C /
systemctl start mysqld

6. 升級過程總結

對于分散安裝的MySQL升級到官方二進制包,流程如下:

  1. 備份:邏輯備份 + 物理備份 + 二進制文件備份
  2. 停服務systemctl stop mysqld
  3. 換文件:用新版本二進制包中的文件,逐個替換系統目錄 (/usr/sbin/, /usr/bin/) 中的舊文件。
  4. 再啟動:啟動服務完成自動數據字典升級。
  5. 跑工具必須執行 mysql_upgrade
  6. 再重啟:使更改生效。
  7. 做驗證

這種方法既享受了官方最新二進制包的好處,又保留了原有系統的配置和服務管理方式,是此類升級場景下的最優解。

7. 總結

本文詳細介紹了通過官方二進制包將 MySQL 5.7.32 升級到 5.7.44 的操作步驟,涵蓋了備份、替換二進制文件、執行升級和回滾方案等內容。通過這種“替換式”升級方法,我們能夠在保留原有配置和數據的同時,順利完成 MySQL 的版本升級。在進行升級時,請務必遵循每個步驟,確保備份工作完善,以便在出現問題時能夠及時恢復。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95099.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95099.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95099.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數學七夕花禮(MATLAB版)

前言參考的視頻在抖音,電腦版的抖音一直登錄不了,用手機分享的鏈接如下所示。4.35 Iv.FH yTl:/ 04/04 復制打開抖音👀數學送的七夕花禮,記得查收噢.# 七夕花禮請查收 ... https://v.douyin.com/H-YpOJCyQyg/rho4sin(8theta)公式&a…

LeetCode - 21. 合并兩個有序鏈表

題目 21. 合并兩個有序鏈表 思路 我會采用雙指針的方法,同時遍歷兩個鏈表,比較當前節點的值,將較小的節點添加到結果鏈表中。 具體思路是這樣的: 首先創建一個啞節點(dummy node)作為合并后鏈表的頭部,這樣可以簡…

ES01-環境安裝

ES01-環境安裝 文章目錄ES01-環境安裝1-參考網址2-知識總結1-參考網址 elasticsearch官網地址:https://www.elastic.co/安裝elasticsearch9.0.0參考:https://zhuanlan.zhihu.com/p/1920780524991017021安裝elasticsearch9.0.0參考:http://ww…

UI前端大數據可視化實戰策略:如何設計符合用戶認知的數據可視化界面?

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!UI前端大數據可視化實戰策略:如何設計符合用戶認知的數據可視化界面?數…

學習python第15天

其實前面學的根本不記得了,小丑.jpg,如果真的面試問到了估計也是一臉懵今日任務:JSON先認識一下JSON和JSONL文件記得之前在面試KIMI的時候,面試官就給我出了JSONL和EXCEL轉換的手撕代碼題,而那個時候,我連什…

Spring框架集成Kakfa的方式

Spring框架集成Kakfa的方式 springboot集成kafka的方式 添加maven依賴 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version> </dependency&g…

【藍橋杯 2024 省 Python B】繳納過路費

【藍橋杯 2024 省 Python B】繳納過路費 藍橋杯專欄&#xff1a;2024 省 Python B 算法競賽&#xff1a;圖論&#xff0c;生成樹&#xff0c;并查集&#xff0c;組合計數&#xff0c;kruskal 最小生成樹&#xff0c;乘法原理 題目鏈接&#xff1a;洛谷 【藍橋杯 2024 省 Python…

個性化導航新體驗:cpolar讓Dashy支持語音控制

文章目錄簡介1. 安裝Dashy2. 安裝cpolar3.配置公網訪問地址4. 固定域名訪問用 cpolar 讓 Dashy 管理個人導航站就是這么簡單&#xff01;三步輕松搞定&#xff1a;在電腦上安裝 Dashy&#xff0c;拖拽添加常用網站&#xff0c;運行 cpolar 生成遠程訪問鏈接。這個方法不僅免費&…

SQL學習記錄

基本的&#xff0c;增、刪&#xff0c;改insert into table_name (列1, 列2,...) VALUES (值1, 值2,....)Delete from 表 where keyvalueupdate 表 set keyvalue,keyvalue where keyvalue查用的最多whereSELECT prod_name, prod_price FROM Products WHERE vend idDLLO1OR ve…

零基礎學C++,函數篇~

C基礎學習&#xff08;DAY_06&#xff09;函數1. 函數的定義與使用2. 函數參數傳遞3. 變量的聲明周期4. 函數的其他特性5. 函數的嵌套與遞歸函數 1. 函數的定義與使用 ? 在設計程序時&#xff0c;如果一段代碼重復進行某種操作或者完成一個特定的功能&#xff0c;就應該將這…

react+vite+ts 組件模板

1.創建項目npm create vitelatest my-app --template react-ts2.配置項目 tsconfig.json{"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"lib": ["ES2020", "DOM", "D…

C語言 - 輸出參數詳解:從簡單示例到 alloc_chrdev_region

C語言中的輸出參數詳解&#xff1a;以 alloc_chrdev_region 為例 在學習 C 語言函數調用時&#xff0c;我們常常接觸到“輸入參數”&#xff0c;比如把一個數字傳給函數&#xff0c;讓函數幫我們算出結果。但有時候可能會發現&#xff0c;有些函數除了返回值之外&#xff0c;還…

機器視覺學習-day09-圖像矯正

1 仿射變換與透視變換1.1 仿射變換之前在圖像旋轉實驗中已經接觸過仿射變換&#xff0c;仿射變換是一個二維坐標系到另一個二維坐標系的過程&#xff0c;在仿射變換中符合直線的平直性和平行性。1.2 透視變換透視變換是把一個圖像投影到一個新的視平面的過程。在現實世界中&…

杰理ac791獲取之前版本sdk

很慚愧&#xff0c;一個如此簡單的問題卡了這么久&#xff0c;運動戰的本質就是多找線索&#xff0c;多嘗試

基于軸重轉移補償和多軸協調的粘著控制方法研究

基于軸重轉移補償和多軸協調的粘著控制方法研究 1. 論文標題 基于軸重轉移補償和多軸協調的粘著控制方法研究 2. 內容概括 該論文針對重載電力機車在復雜軌面條件下易發生空轉的問題,提出了一種新型粘著控制方法。傳統方法僅考慮單軸粘著利用而忽略軸間關系,本文設計了包…

臺達 PLC 軟件導入 EDS 文件后不能通過 PDO 控制的解決方法

一、功能及注意事項 1.功能說明&#xff1a;通過修改 EDS 文件處理臺達 PLC 軟件導入 EDS 文件后不能通過 PDO 控制的解決方法 2.注意事項&#xff1a;1).此文檔只針對立邁勝 CANopen 通訊一體化電機&#xff1b; 2).EDS 文件可以用記事本打開&#xff1b; 二、EDS 文件修改 IS…

Python庫2——Matplotlib2

上一篇文章主要介紹了Matplotlib庫中的Pyplot模塊中幾大常見圖像的繪制&#xff0c;包括自行修改圖像的屬性&#xff0c;在繪制圖像時會自動創建一個圖形窗口來展現這些圖像。本節內容繼續講講這個&#xff08;Figure&#xff09;圖像窗口即其一些常見用法。 其他python庫鏈接…

AI生成思維導圖和AI生成Excel公式

AI生成思維導圖和AI生成Excel公式 AI 生成思維導圖和 AI 生成 Excel 公式是一個完全免費的 AI 辦公合集網站。 它完全免費&#xff0c;一個網站支持多個實用 AI 辦公功能&#xff0c;包括&#xff1a;免費 AI Excel 公式生成器、輸入 Excel 公式解釋含義、AI Excel 助手、Exc…

java中的VO、DAO、BO、PO、DO、DTO

VO、DAO、BO 等對象在了解這里 po、vo、dao、之前先介紹下 MVC 開發模式M層負責與數據庫打交道&#xff1b;C層負責業務邏輯的編寫&#xff1b;V層負責給用戶展示&#xff08;針對于前后端不分離的項目&#xff0c;不分離項目那種編寫模版的方式&#xff0c;理解V的概念更直觀&…

More Effective C++ 條款16:牢記80-20準則(Remember the 80-20 Rule)

More Effective C 條款16&#xff1a;牢記80-20準則&#xff08;Remember the 80-20 Rule&#xff09;核心思想&#xff1a;軟件性能優化遵循帕累托原則&#xff08;Pareto Principle&#xff09;&#xff0c;即大約80%的性能提升來自于優化20%的關鍵代碼。識別并專注于這些關鍵…