幫助中心
這里有最新的使用文檔和教程
操作系統:CentOS 7.x
MySQL二進制版本:5.7.x 小版本升級
現有版本:MySQL 5.7.38
升級后版本:MySQL 5.7.39
下載地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
上傳mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz到/usr/local/src
升級前先查看MySQL 5.7.x 中添加、棄用或刪除的變量和選項
https://dev.mysql.com/doc/refman/5.7/en/added-deprecated-removed.html
############################################
MySQL 8.0.x版本可以使用mysql-shell進行升級前的檢查
mysql-shell-8.0.29-linux-glibc2.12-x86-64bit.tar.gz
https://cdn.mysql.com/archives/mysql-shell/mysql-shell-8.0.29-linux-glibc2.12-x86-64bit.tar.gz
tar zxvf /usr/local/src/mysql-shell-8.0.29-linux-glibc2.12-x86-64bit.tar.gz -C /usr/local/
cd /usr/local
mv mysql-shell-8.0.29-linux-glibc2.12-x86-64bit mysql-shell
cd /usr/local/mysql-shell/bin
./mysqlsh -- util checkForServerUpgrade root@localhost:3306 --target-version=5.7.39 --output-format=JSON --config-path=/data/server/mysql/my.cnf
############################################
使用離線方式進行升級
一、主庫操作
1、進入mysql控制臺
set global innodb_fast_shutdown=0; #保障數據的完整性
flush tables with read lock; #數據庫只讀鎖定命令,防止導出數據庫的時候有數據寫入(命令執行期間控制臺不能關閉,控制臺關閉命令就自動失效了,unlock tables;#解除鎖定)
set global read_only=on; #設置數據庫為只讀(數據庫重啟之后命令失效,set global read_only=off;#解除鎖定)
2、備份數據
#重啟打開一個終端進行操作
/data/server/mysql/bin/mysqldump -h 127.0.0.1 -u root -p lts --default-character-set=utf8mb4 --opt -Q -R --skip-lock-tables> /tmp/lts-bak.sql
3、停止mysql
/data/server/mysql/mysql.sh stop
4、安裝新版mysql
#備份mysql安裝目錄和數據庫目錄(mysql數據庫目錄在/data/server/mysql/data下)
mv /data/server/mysql /data/server/mysql.bak
#創建新版數據庫安裝目錄
mkdir -p /data/server/mysql
#解壓新版軟件到安裝目錄
cd /usr/local/src/
tar zxvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz -C /data/server/mysql --strip-components 1
#拷貝舊版數據存放目錄、my.cnf配置文件、mysql啟動腳本到新版數據庫安裝目錄
cp -r /data/server/mysql.bak/data /data/server/mysql/
cp -r /data/server/mysql.bak/my.cnf /data/server/mysql/
cp -r /data/server/mysql.bak/mysql.sh /data/server/mysql/
#注意權限保持一致
chown mysql.mysql /data/server/mysql -R
#編輯配置文件,注釋掉主從同步的配置參數
vi /data/server/mysql/my.cnf
#log-bin=mysql-bin
#binlog-do-db=lts
#binlog-ignore-db=mysql
:wq! #保存退出
#啟動mysql
/data/server/mysql/bin/mysqld_safe --defaults-file=/data/server/mysql/my.cnf --user=mysql --port=3306 --basedir=/data/server/mysql --datadir=/data/server/mysql/data --socket=/data/server/mysql/data/mysql.sock --pid-file=/data/server/mysql/data/mysql.pid --skip-grant-tables --skip-networking &
注:–skip-grant-tables和–skip-networking參數,來保證沒有任何的應用連接,讓升級過程更加安全。
#查看數據庫是否正常啟動
ps -ef |grep mysqld
5、升級系統表數據字典信息
/data/server/mysql/bin/mysql_upgrade
[root@mysql-master mysql]# /data/server/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
The sys schema is already up to date (version 1.5.2).
Checking databases.
lts.lts_cron_job_queue OK
lts.lts_executing_job_queue OK
lts.lts_fjq_test_jobclient OK
lts.lts_job_log_po OK
lts.lts_node_group_store OK
lts.lts_repeat_job_queue OK
lts.lts_suspend_job_queue OK
lts.lts_wjq_test_trade_tasktracker OK
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
6、登錄到數據庫查看版本