本文主要介紹了MySQL 5.7.44升級到MySQL 8.0.35的詳細過程,包括升級背景、環境信息、升級前的準備工作、升級過程和升級后的檢查。在升級過程中,建議使用MySQL Shell進行升級前檢查,確保數據安全和兼容...
MySQL 5.7.44 升級到 MySQL 8.0.35 詳細文檔(使用二進制方式)
1. 升級背景與環境信息
目標:將 MySQL 5.7.44 升級到 MySQL 8.0.35,確保數據安全、最小化關服務時間,使用二進制安裝方式。
服務器環境:
IP 地址: 192.168.100.120
MySQL 基本路徑 (basedir): /usr/local/mysql
數據路徑 (datadir): /data/mysqldata
配置文件: /etc/my.cnf
操作系統: Red Hat/CentOS 7.x 系列
注意事項:
MySQL 8.0 對于權限系統、數據格式、SQL 語法等有重大變化。
mysql_upgrade 在 MySQL 8.0 中已棄用,應使用 mysqlsh 進行兼容性檢查與數據升級。
2. 升級前的準備工作
安裝必要的工具和依賴:
確保以下依賴已經安裝:
yum install -y gcc libaio perl-Data-Dumper mysql-shell
下載 MySQL 8.0 二進制安裝包:
從 MySQL 官方下載 MySQL 8.0.35 的二進制安裝包:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz
檢查現有應用兼容性:
檢查當前應用對 MySQL 8.0 的兼容性,特別是針對 SQL 語法、權限和數據存儲格式的變更。
**配置 MySQL Shell (mysqlsh)**:
安裝 MySQL Shell,作為升級檢查工具:
yum install mysql-shell
3. 升級前的檢查
3.1 使用 MySQL Shell 進行升級前檢查
使用 mysqlsh 進行數據庫的兼容性檢查,確保數據庫結構、權限等適配 MySQL 8.0。
連接到 MySQL 5.7:
mysqlsh root@localhost:3306 --mysql
運行升級檢查工具:
使用 util.checkForServerUpgrade() 檢查是否存在兼容性問題:
\connect root@localhost:3306
util.checkForServerUpgrade({"datadir": "/data/mysqldata", "targetVersion": "8.0.35", "configPath":"/etc/my3410.cnf"})
檢查并修復兼容性問題:
解決檢查中發現的兼容性問題,包括表結構、字符集、權限系統等。
3.2 檢查權限系統與數據結構
檢查表的引擎與字符集:
MySQL 8.0 強制使用 utf8mb4 編碼,確保所有表和數據庫使用正確的字符集:
SELECT table_schema, table_name, engine, table_collation
FROM information_schema.tables
WHERE engine != 'InnoDB' OR table_collation NOT LIKE 'utf8mb4%';
導出用戶和權限表:
確保升級前備份用戶和權限,防止權限丟失:
mysqldump -u root -p mysql > /backup/mysql_users_backup.sql
檢查大小寫,SQL_MODEL:
確保數據庫大小寫,SQL_MODE一致:
show variables like 'sql_mode';
show variables like 'lower_case_table_names';
4. 升級前的備份
4.1 使用邏輯備份(推薦)
邏輯備份是最安全的升級方式,避免物理格式的兼容性問題。使用 mysqldump 對所有數據庫進行完整備份。
mysqldump -u root -p --all-databases --routines --triggers --events --single-transaction --flush-logs > /backup/full_backup.sql
備份路徑:/backup/full_backup.sql
權限表備份:已包含在 --all-databases 中,但單獨備份權限表可增強安全性。
4.2 驗證備份文件
在備份完成后,確保備份文件無誤:
less /backup/full_backup.sql
5. 升級步驟明細
5.1 停止 MySQL 5.7 服務
首先停止 MySQL 5.7 服務,確保所有數據寫入已完成:
systemctl stop mysqld
5.2 備份 MySQL 安裝目錄和數據目錄
為了確保即使升級失敗,也可以完整回滾,需要備份當前的安裝目錄和數據目錄。
mv /usr/local/mysql /usr/local/mysql_backup
cp -R /data/mysqldata /data/mysqldata_backup
5.3 解壓 MySQL 8.0.35 二進制包
解壓并安裝新的 MySQL 8.0.35 二進制包。
tar -xvf mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.35-linux-glibc2.12-x86_64 /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
5.4 保持現有的數據目錄
不要對數據目錄進行初始化,直接保留 MySQL 5.7 的數據文件。確保數據目錄的權限正確:
chown -R mysql:mysql /data/mysqldata
5.5 啟動 MySQL 8.0
啟動 MySQL 8.0 服務:
systemctl start mysqld
6. 升級后的驗證
6.1 驗證 MySQL 版本
確保 MySQL 已成功升級到 8.0.35:
mysql --version
6.2 驗證數據完整性
使用 mysqlcheck 驗證數據的完整性:
mysqlcheck -u root -p --all-databases
6.3 驗證權限系統
檢查用戶權限是否正常:
SELECT user, host FROM mysql.user;
7. 升級失敗的回退方案
若升級過程中遇到無法解決的問題,或 MySQL 8.0 無法正常工作,可回滾至 MySQL 5.7。
停止 MySQL 8.0 服務:
systemctl stop mysqld
恢復 MySQL 5.7 安裝目錄與數據目錄:
mv /usr/local/mysql /usr/local/mysql_failed
mv /usr/local/mysql_backup /usr/local/mysql
mv /data/mysqldata /data/mysqldata_failed
mv /data/mysqldata_backup /data/mysqldata
啟動 MySQL 5.7:
systemctl start mysqld
驗證 MySQL 5.7 數據與服務:檢查是否一切恢復正常。
8. 總結
邏輯備份優先:在升級過程中始終優先使用邏輯備份,確保數據安全。
兼容性檢查:通過 MySQL Shell 的 util.checkForServerUpgrade() 工具提前發現并解決兼容性問題。
無需重新初始化數據:數據目錄保留現有結構,避免誤操作導致數據丟失。
回滾機制:通過備份原有 MySQL 目錄和數據,確保即使升級失敗也能快速回滾。
此文檔力求確保升級過程穩健、安全,幫助你順利完成從 MySQL 5.7.44 到 8.0.35 的升級。
原諒來源:https://mp.weixin.qq.com/s/lxBiCPHQfaZ7pkVsCpJv4Q
來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利
蘇公網安備32010402000125
蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司
南京思必達教育科技有限公司版權所有 百度統計