MySQL資料庫升級

来源:https://www.cnblogs.com/gjc592/archive/2020/03/28/12586877.html
-Advertisement-
Play Games

當前不少系統的資料庫依舊是MySQL5.6,由於MySQL5.7及MySQL8.0在性能及安全方面有著很大的提升,因此需要升級資料庫。本文通過邏輯方式、物理方式原地升級來介紹MySQL5.6 升級至MySQL5.7的方法,並介紹其使用場景。 1. 邏輯方式升級 邏輯方式升級其實就是通過邏輯備份工具( ...


當前不少系統的資料庫依舊是MySQL5.6,由於MySQL5.7及MySQL8.0在性能及安全方面有著很大的提升,因此需要升級資料庫。本文通過邏輯方式、物理方式原地升級來介紹MySQL5.6 升級至MySQL5.7的方法,並介紹其使用場景。

1.  邏輯方式升級

邏輯方式升級其實就是通過邏輯備份工具(例如mysqldump工具)將資料庫、表、其他相關對象及數據邏輯備份成SQL腳本,再將其還原至MySQL5.7的實例中。

詳細步驟如下:

1.1  備份資料庫

當前資料庫的版本為MySQL5.6.27,現在準備備份

 因為庫比較小,因此使用mysqldump進行備份即可。mysqldump備份的方法可以參考歷史文章進行瞭解 

MySQL數據備份及還原(一) https://mp.weixin.qq.com/s/JbLThtgUq5RjkCuztSgBJg 或 https://www.cnblogs.com/gjc592/p/12505347.html

備份腳本:

/*  備份所有庫及相關對象 */
/usr/local/mysql/bin/mysqldump -uroot -p  --socket=/app/data/mysql3307/tmp/mysql.sock  --master-data=2 --default-character-set=utf8  --routines   --triggers --events --flush-logs --flush-privileges --single-transaction  --all-databases   > all_db.sql

1.2  部署一套MySQL5.7實例

MySQL5.7 的部署歷史文章里也有,如果不太熟悉的同學可以參考如下鏈接文章

MySQL5.7安裝https://mp.weixin.qq.com/s/fbp-3hpMxrCc7R3_HQTchA 或 https://www.cnblogs.com/gjc592/p/9203711.html

安裝過程比較簡單,本文不再贅述。

1.3  數據導入MySQL5.7

將備份的MySQL5.6的數據導入到MySQL5.7 中即可。

1.4 應用場景

  • 數據量小的情況下使用,此方式通常不會失敗
  • 在跨大版本升級的時候使用較多,例如,從MySQL5.6(或更低版本)直接升級到8.0版本
  • 不同MySQL分支之間升級

 

2.  mysql_update方式升級

使用mysql_update方式升級時,時間相對較快,尤其是資料庫體量較大時,此方式可以原地直接升級。

步驟如下:

2.1  下載MySQL5.7

下載需要升級到的版本的資料庫,例如本次升級到MySQL5.7.25-28版本(percona分支),則下載對應安裝包,解壓後配置軟連接

2.2  修改配置文件

因MySQL5.6 的部分參數再MySQL5.7 中已經廢棄或者預設值發生變化,另外也為了使用MySQL5.7的新特性,需要添加對應的參數配置,例如:

  • sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION   # 保持和MySQL5.6一致
  • innodb_large_prefix =OFF                                         # 保持和MySQL5.6 一致
  • log_timestamps=SYSTEM            # 新增參數,如果不添加,預設日誌里採用UTC時間格式記錄,我們看上去可能不太方便
  • secure_file_priv=/tmp                  # MySQL5.7對安全性做了很多提升,此參數不配置的話預設無法使用load file 及ELECT …OUTFILE等
  • character_set_server= utf8         # 雖然建議使用utf8mb4字元集,但是如果需要保持和原庫一致,需要指定

當日,還有很多新特性的參數需要調整,在此不再一一列舉,需要的同學直接聯繫我 或者參考歷史文章配置即可

2.3 關閉MySQL5.6 實例

MySQL5.6的關閉可以使用停止服務的方式,也可以通過命令行方式,命令如下:

/*  mysql5.6 關閉實例的方式需要使用mysqladmin */
/usr/local/mysql/bin/mysqladmin  --socket=/app/data/mysql3307/tmp/mysql.sock    -uroot -p shutdown

建議: 生產環境中,如果可以使用此方式升級,強烈建議先直接冷備一下整個資料庫的數據目錄,已防止升級失敗等情況出現。

2.4  使用MySQL5.7 啟動原庫

此時需要用MySQL5.7來啟動資料庫,啟動後日誌里會有一些報錯信息。

啟動資料庫

/usr/local/mysql5.7/bin/mysqld_safe  --defaults-file=/app/data/mysql3307/etc/my.cnf &

日誌里內容如下,出現很多錯誤,其中也提示到需要使用mysql_upgrade進行修複:

 2.5  升級資料庫

MySQL升級工具是mysql_upgrade,錯誤日誌里也提到了使用mysql_upgrade進行修複相應的錯誤。升級的方法如下:

/*  升級系統庫及業務庫 */
/usr/local/mysql5.7/bin/mysql_upgrade  --socket=/app/data/mysql3307/tmp/mysql.sock    -uroot -p 

 如果只需要升級系統庫,則加-s參數; 如果升級過程中有錯誤或者中斷後想再次升級 可以添加--force參數強制升級

/*  只升級系統庫 */
 /usr/local/mysql5.7/bin/mysql_upgrade  --socket=/app/data/mysql3307/tmp/mysql.sock    -uroot -p   -s
/*  強制升級 */
 /usr/local/mysql5.7/bin/mysql_upgrade  --socket=/app/data/mysql3307/tmp/mysql.sock    -uroot -p   --force

2.6 後續工作

升級完成後建議再進行以下工作

  • 重啟資料庫,以便所有功能生效;且重啟後再次查看資料庫日誌
  • 修改環境變數及軟連接,以便預設使用MySQL5.7的相關命令

附: 升級後資料庫啟動日誌

2.7  使用場景

相同大版本之間的小版本升級

數據量較大,提前測試過兩個版本之間可以原地升級時再用。

 

3.  小結

MySQL的邏輯升級及mysql_upgrade的原地升級都有各自的應用場景。但是無論用哪種方式,都要註意以下幾點:

a)   在生產環境上進行升級操作之前一定需要先在測試環境中多次進行相同版本的升級測試工作;

b) 實際工作中,測試環境升級成功後需要經過相關業務的回歸測試,確保相關功能升級後能正常使用後再在生產環境進行升級,建議測試環境進行1個月以上的測試

c)   生產環境升級前一定要進行備份

d)   生產環境的升級順序建議是先升級從節點,再升級主節點或進行主從切換

 

以上就是MySQL5.6升級至MySQL5.7的2種主要方式,如有問題或建議,歡迎與我溝通或投稿(公眾號:資料庫乾貨鋪)。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 段、頁結合:程式員希望用段,物理記憶體希望用頁,所以、、、 從虛擬記憶體中割出一個區域來給這個段,段就有了映射,但是這個虛擬記憶體不能正真的使用,需要把虛擬記憶體再映射一次,這個時候虛擬記憶體中的段分割成固定大小的頁,每一頁再去映射到物理記憶體中 1. 段、頁同時存在 段面向用戶,頁面向硬體 2. 段頁同時存在 ...
  • 1.下載CentOS CentOS下載地址: "https://wiki.centos.org/Download" 這裡選擇本地安裝包,網路安裝包在安裝時需要線上下載資源比較慢 2.安裝VirtualBox VirtualBox是Oracle旗下免費的輕量級虛擬機 VirtualBox下載地址: " ...
  • 我們在使用bash命令時,會經常使用二次tab鍵進行補齊。 例如我們常用的telnet命令,在輸入二次tab鍵時,會列出當前系統配置的所有主機名,供選擇 # 輸入 telnet <Tab> <Tab> [huangcihui:/home/huangcihui] telnet ::1 localhos ...
  • 在InnoDB中,數據存儲在磁碟上,處理數據時需要先將數據從磁碟讀取,再寫到記憶體。InnoDB採用局部性原理載入。 一、局部性原理 從磁碟讀取數據時,不需要一行一行讀取,而是以頁為單位讀取,操作系統中一頁4kb,InnoDB中一頁16kb。 二、InnoDB頁結構 頁是InnoDB管理存儲空間的基本 ...
  • 早期我們怎麼進行資料庫操作呢? 1、原理:一般來說,Java應用程式訪問資料庫的過程是: 載入資料庫驅動程式; 通過jdbc建立資料庫連接; 訪問資料庫,執行SQL語句; 斷開資料庫連接。 2、代碼 1 //查詢所有用戶 2 Public void FindAllUsers(){ 3 //1、裝載s ...
  • MySQL資料庫 前言: 前面我們瞭解了什麼是資料庫,什麼是MySQL資料庫以及如何運用,接下來我們接著深入學習MySQL。 (提前聲明,以下所提供的事例不標準,僅供參考) 資料庫的備份與還原: 備份: 在cmd中輸入 mysqldump -u root -p 資料庫名稱 > 備份路徑 還原:兩種方 ...
  • 一.前言 H2 是一個用 Java 開發的嵌入式資料庫,它本身只是一個類庫,即只有一個 jar 文件,可以直接嵌入到應用項目中。H2 主要有如下三個用途: 第一個用途,也是最常使用的用途就在於可以同應用程式打包在一起發佈,這樣可以非常方便地存儲少量結構化數據。 第二個用途是用於單元測試。啟動速度快, ...
  • SQL編程 1).if-elseif-else語句 語法: if 條件 then //條件1 elseif 條件 then //條件2 else //條件3 end if; 示例演示: create procedure pro_9(in grade int) -- 輸入等級 begin if gra ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...