基於LINUX的MySql二進位制本地升級實施文件

yingyifeng306發表於2022-04-15

升級資料庫

MySql 安裝分為兩種,分為二進位制安裝和 RPM 包安裝, RPM   包安裝方式存在很大的侷限性,即同一臺物理主機或虛擬主機上不支援同時安裝兩套及以上不同版本的  MysQL   軟體。如果一定要使用新 RPM 包介質升級,則必須先解除安裝老版本,再安裝新版本。對於大多數原地升級的場景,推薦使用官方通用的二進位制發行版安裝包,或者使用者定製原始碼編譯的二進位制包。

安裝包下載: https://dev.mysql.com/downloads/mysql/   Looking for the latest GA version    選擇對應的版本下載。下圖為作者下載的包。

當前版本為 5.7.27

需要升級的版本 5.7.37

安裝目錄: /usr/local/mysql

資料檔案存放目錄: /usr/local/mysql/data

升級後安裝目錄: /mysql/app/mysql-5.7.37

 

下載  MySQL   5.7.37 系列最新版本軟體安裝包,上傳到目標位置,並配置環境變數,命令如下。

shell > mkdir -p /mysql/app/mysql-5.7.37

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

shell > echo 'export PATH=/mysql/app/mysql-5.7.37/bin:$PATH' >> $HOME/.bash_profile

 

如果當前 MySOL 使用了 InnoDB XA 分散式事務,那麼在升級之前需要執行 XA

RECOVER 來檢查未提交的 XA 事務。如果返回的結果中確實存在這類 XA 分散式事務,

則需要透過 XA commit 語句提交這類事務:

mysql > XA RECOVER;

mysql > XA COMMIT xid;

  或者透過 XA rollback 語句回滾這類 XA 分散式事務

mysql > XA ROLLBACK xid;

 

先將源庫的 innodb_fast_shutdown 全域性系統變數值設定為 0 ,命令如下:

mysql> set global innodb_fast_shutdown = 0;

     然後對 MySql 源庫例項執行慢關閉,命令如下

[root@localhost ~]# mysqladmin -u root -p -S /var/lib/mysql/mysql.sock shutdown

注:/var/lib/mysql/mysql.sock 此檔案可透過cat /etc/my.cnf 檢視位置

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

[root@localhost ~]# service mysqld stop

 

shell> mkdir -p /usr/local/mysql/databak

shell> mv /usr/local/mysql/data/*  /usr/local/mysql/databak

 

修改mysql 安裝引數

[root@localhost ~]# vi /etc/my.cnf

#basedir=/usr/local/mysql

basedir=/mysql/app/mysql-5.7.37

將原先的安裝目錄註釋,附上目標端目錄

進入/etc/init.d/ ,將原先服務備份,並將目標例項複製過來。

[root@localhost bin]# cd /etc/init.d/

[root@localhost init.d]# mv mysqld mysqld_bak

[root@localhost init.d]# cp /mysql/app/mysql-5.7.37/support-files/mysql.server

 /etc/init.d/mysqld

修改mysqld 程式,加入安裝目錄,和資料目錄

[root@localhost init.d]# vi /etc/init.d/mysqld

…………………

basedir=/mysql/app/mysql-5.7.37

datadir=/usr/local/mysql/data

…………………

賦予許可權,並新增開機啟動

[root@localhost init.d]# chmod +x /etc/init.d/mysqld

[root@localhost init.d]# chkconfig --add mysqld

[root@localhost init.d]# chkconfig --list mysqld

 

 

[root@localhost init.d]# service mysqld start

 

mysql_upgrade 會檢查所有資料庫中的所有表,查詢與當前 MySQL 版本不相容的地

方,還會升級 MySQL 系統資料庫,以便利用新版本的許可權或功能。這是整個升級流程中最

為重要的一步, MySQL 會對系統物件進行更新,從而讓資料庫能夠充分利用新版本的功能

和特性。下面執行 mysql_upgrade 程式,檢查並解決舊資料和新軟體之間可能存在的任何不相容問題:

[root@localhost init.d]# mysql_upgrade -u root -p -S /var/lib/mysql/mysql.sock

Enter password:

Checking if update is needed.

Checking server version.

Error: Server version (5.7.37) does not match with the version of

the server (5.7.27) with which this program was built/distributed. You can

use --skip-version-check to skip this check.

 

[root@localhost init.d]# mysql_upgrade -u root -p -S /var/lib/mysql/mysql.sock --skip-version-check

Enter password:

 

Upgrade process completed successfully.

Checking if update is needed.

 

[root@localhost ~]# vi .bash_profile

#export PATH=$PATH:/usr/local/mysql/bin

[root@localhost ~]# source .bash_profile

將原先的環境變數註釋掉

[root@localhost ~]# mysql -V

mysql  Ver 14.14 Distrib 5.7.37, for linux-glibc2.12 (x86_64) using  EditLine wrapper

 


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

相關文章