MySQL 5.6.47升級到5.7.20(一)

資料和雲發表於2020-04-01

原文連結:  


摘要:MySQL升級方式有兩種,一種叫In-Place Upgrade,另一種叫Logical Upgrade (邏輯升級方式)。本文演示使用In-Place Upgrade升級MySQL。

1.升級方法介紹

MySQL升級方式有兩種,一種叫In-Place Upgrade,另一種叫Logical Upgrade (邏輯升級方式)。

Logical Upgrade:利用mysqldump來直接匯出SQL檔案,然後匯入到新庫中,適應於跨大版本的升級方案,做法相對安全,並能整理表中碎片。但如果有資料量較大的庫需要mysqldump匯出,時間上的消耗就會很大,升級效率就會受到影響。

In-Place Upgrade:它的工作方法簡單快速,就是直接替換掉原來版本MySQL的安裝目錄和my.cnf配置檔案,利用mysql_upgrade指令碼來完成系統表的升級。

本文演示使用In-Place Upgrade升級MySQL。

2.升級步驟

2.1操作之前,檢視版本

[root@source bin]# /usr/local/mysql/bin/mysql -V
mysql Ver 14.14 Distrib 5.6.47, for linux-glibc2.12 (x86_64) using EditLine wrapper

2.2設定引數innodb_fast_shutdown為0

需要將innodb_fast_shutdown引數設定為0
set global innodb_fast_shutdown=0;
注:innodb_fast_shutdown有0、1、2三個值。
引數值為0代表MySQL關閉,InnoDB需要完成所有的full purge和merge Insert buffer操作,這個過程需要一定的時間,有時可能會花上幾個小時。
引數值為1是該引數的預設值,表示關閉MySQL時不完成full purge和Merge insert buffe操作,但是緩衝池中的髒頁還是會寫到磁碟中。
引數值為2時,表示既不完成full purge和Merge insert buffer操作,也不將緩衝池中的髒頁重新整理到磁碟,而是將日誌寫入日誌檔案中。

2.3關閉MySQL服務

命令如下:
[root@source bin]# /usr/local/mysql/bin/mysqladmin -uroot -poracle123 shutdown

2.4替換MySQL軟體

需要執行unlink mysql命令,取消連結到MySQL 5.6.47版本的連結檔案。
解壓新版本的MySQL軟體包,然後重新做連結並賦予MySQL許可權。命令如下:

cd /usr/local
unlink mysql
tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql
chown -R mysql:mysql mysql

2.5替換引數檔案

把MySQL5.6的配置檔案替換成5.7版本的my.cnf。

2.6啟動MySQL例項

注:在啟動過程中,需要新增–skip-grant-tables和–skip-networking引數,來保證沒有 任何的應用連線,讓升級過程更加安全。
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking &

2.7升級系統表資料字典資訊

命令如下:
/usr/local/mysql/bin/mysql_upgrade
輸出結果:

[root@source local]# /usr/local/mysql/bin/mysql_upgrade
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Upgrading the sys schema.
Checking databases.
sys.sys_config                                     OK
test.BONUS                                         OK
test.DEPT                                          OK
test.EMP                                           OK
test.SALGRADE                                      OK
Upgrade process completed successfully.
Checking if update is needed.
[root@source local]#

沒有報錯,表示系統表資料字典資訊升級成功。

2.8重啟MySQL服務

首先停掉MySQL服務,命令如下:
/usr/local/mysql/bin/mysqladmin -uroot -poracle123 shutdown
然後正常啟動MySQL服務,命令如下:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
說明:正常啟動MySQL資料庫,不要使用–skip-grant-tables和-skip-networking引數。

2.9驗證MySQL版本

目前己經是MySQL5.7版本,證明升級成功:
[root@source local]# /usr/local/mysql/bin/mysql -V
/usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.7.20, for linux-glibc2.12 (x86_64) using EditLine wrapper

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

相關文章