基於centos7的MySQL8.0二進位制安裝包的本地升級

龍山游龍發表於2021-07-30

第一部分資料庫備份

在升級資料庫之前,首先對資料庫進行備份。可以採用冷備或熱備。

1.1冷備

如果伺服器有足夠的時間能夠停機進行備份操作,可以直接採用冷備的方式。在將資料庫關閉之後,直接將資料目錄複製到備份目錄中。

shell> mkdir -p /mysql/mysql802/product
shell> cp /mysql/mysql80/product/* /mysql/mysql802/product

注意:冷備前需要先檢視配置檔案,確認資料庫的所有檔案是否都在資料目錄中,部分日誌有沒有設定到其他目錄中。

1.2邏輯熱備

mysqldump是MySQL自帶的備份工具,我們只需要直接使用就行。

shell> /mysql/mysql80/app/bin/mysqldump -uroot -pAbcd321# -S /mysql/product/mysql80/data/mysql.sock --single-transaction --master-data=2 -E -R --all-databases >full.sql

使用上述命令備份全庫至指定目錄。

shell> tail -1 full.sql
-- Dump completed on 2020-10-29  9:23:04

若最後輸出Dump completed on,則說明備份成功。

1.3物理熱備

下載XtraBackup8.0:

使用,登入官網XtraBackup8.0下載區,下載最新版本的二進位制包。

在Linux系統上傳介質包percona-xtrabackup-8.0.14-Linux-x86_64.glibc2.12.tar.gz,建立/Xtrabackup目錄。

shell> mkdir -p /Xtrabackup
sftp> cd /Xtrabackup
sftp> put percona-xtrabackup-8.0.14-Linux-x86_64.glibc2.12.tar.gz

解壓介質包,並設定環境變數。

shell> tar zxf percona-xtrabackup-8.0.14-Linux-x86_64.glibc2.12.tar.gz
shell> cd percona-xtrabackup-8.0.14-Linux-x86_64.glibc2.12/bin/
shell> pwd 
/Xtrabackup/percona-xtrabackup-8.0.14-Linux-x86_64.glibc2.12/bin
shell> vi /root/.bash_profile
export PATH=/Xtrabackup/percona-xtrabackup-8.0.14-Linux-x86_64.glibc2.12/bin:$PATH
shell> source /root/.bash_profile
shell> su -

至此,Percona Xtrabackup部署完成。然後開始備份。

shell> mkdir /Xtrabackup/backup
shell> xtrabackup --defaults-file=/mysql/mysql80/app/my.cnf -uroot -pAbcd321# -S /mysql/mysql80/product/data/mysql.sock --backup --target-dir=/Xtrabackup/backup
......
201029 09:32:42 completed OK!

最後輸出completed OK!,則說明備份成功。

第二部分升級資料庫

就地升級包括關閉舊的MySQL伺服器,用新的二進位制包替換舊的二進位制包,在現有資料目錄上重新啟動MySQL,以及升級現有安裝中需要升級的剩餘部分。

2.1升級前準備

開啟mysql官網下載頁面:https: // downloads.mysql.com/archives/community/ ,下載要升級的對應版本的資料庫,並上傳到指定目錄。

檢查你的升級路徑,資料庫升級不支援跳過版本的升級,例如,不支援直接從MySQL 5.5升級到8.0。建議先升級到最新版本,再升級到下一版本。支援在發行系列中進行升級。

檢查你的配置檔案,檢視引數設定是否與新版本的資料庫相容。

2.2提交或回滾分散式事務

如果在InnoDB中使用XA事務,請在升級之前執行XA RECOVER以檢查未提交的XA事務。如果有返回結果,則透過發出XA COMMIT或 XA ROLLBACK語句來提交或回滾XA事務。

mysql> XA RECOVER;
mysql> XA COMMIT xid;

2.3配置慢關機

如果您使用InnoDB,請透過InnoDB_fast_shutdown配置MySQL執行慢關機。

mysql> set global innodb_fast_shutdown=0;

2.4關閉原資料庫

在關閉資料庫時,需要使用對應資料庫的命令:

shell> /mysql/mysql80/app/bin/mysqladmin -uroot -pAbcd321# -S /mysql/product/mysql80/data/mysql.sock shutdown

如果您將MySQL伺服器作為服務執行,可用service停止服務:

shell> service mysqld80 stop

2.5移走原資料庫安裝目錄

shell> mkdir -p /mysql/mysql802/app
shell> mv /mysql/mysql80/app/* /mysql/mysql802/app/

2.6解壓新的資料庫

將新版本的資料庫解壓到原來的安裝目錄中:

shell> tar zxvf mysql-8.0.23-linux-glibc2.12-x86_64.tar.gz -C /mysql/mysql80/app --strip-components=1

2.7啟動資料庫服務

用新的資料目錄和舊的資料目錄啟動資料庫服務。

shell> mysqld_safe --defaults-file=/mysql/mysql80/app/my.cnf --user=mysql &

如果您將MySQL伺服器作為服務執行,請重新設定資料庫服務:

[root@mysql ~]# cp /mysql/mysql80/app/support-files/mysql.server /etc/init.d/mysqld80
[root@mysql ~]# vi /etc/init.d/mysqld80
basedir=/mysql/mysql80/app
datadir=/mysql/mysql80/product/data
shell> service mysqld80 start

2.8升級資料庫

從MySQL 8.0.16開始,伺服器將在上一步啟動服務時完成對系統的升級。如果你的新版本是MySQL 8.0.16以上,則不需要接下來兩步。

mysql_upgrade檢查所有資料庫中的所有表是否與當前版本的MySQL不相容。mysql_upgrade還會升級 mysql系統資料庫,以便您可以利用新的特權或功能。

shell> mysql_upgrade -uroot -pAbcd321# -S /mysql/mysql80/product/data/mysql.sock
......
OK

最後如果彈出了OK輸出,則說明升級資料庫成功。

2.9重啟資料庫

關閉並重新啟動MySQL伺服器,以確保對系統表所做的所有更改均生效:

shell> mysqladmin -uroot -pAbcd321# -S /mysql/mysql80/product/data/mysql.sock shutdown
shell> mysqld_safe --defaults-file=/mysql/mysql80/app/my.cnf --user=mysql &

如果您將MySQL伺服器作為服務執行:

shell> service mysqld80 restart


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30310891/viewspace-2784364/,如需轉載,請註明出處,否則將追究法律責任。

相關文章