一呐能、升級前準(zhǔn)備
1.1.MySQL提供mysql-shell驗證方式,可以下載后進行驗證:
下載shell驗證文件:
https://cdn.mysql.com/archives/mysql-shell/mysql-shell-8.0.27-linux-glibc2.12-x86-64bit.tar.gz
驗證是否可以升級成功(驗證的時候出現(xiàn)了幾個錯誤沒去處理抑堡,升級后倒時也沒發(fā)現(xiàn)問題摆出,如果是生產(chǎn)環(huán)境下還是要小心一些)
# 驗證mysql升級
[root@localhost] tar -xf mysql-shell-8.0.27-linux-glibc2.12-x86-64bit.tar.gz
[root@localhost] cd mysql-shell-8.0.27-linux-glibc2.12-x86-64bit/bin
[root@localhost] ./mysqlsh -uroot -p'123456' -S /tmp/mysql.sock -e "util.checkForServerUpgrade()"
1.2. 備份原數(shù)據(jù)庫(防止升級過程中出現(xiàn)問題,導(dǎo)致數(shù)據(jù)丟失夷野,有條件建議異地備份)
[root@localhost] mysqldump -uroot -p'123456' --all-databases --lock-tables=0 > all.sql.bak.20220412
[root@localhost] mv all.sql.bak.20220412 /data/backup/mysql/
1.3.下載MySQL8.0
下載地址:https://downloads.mysql.com/archives/community/
選擇文件:mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
# 解壓mysql8.0:
[root@localhost] tar -xf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
# 移動到指定目錄
[root@localhost] mv mysql-8.0.27-linux-glibc2.12-x86_64 /usr/local/mysql8
# 更改文件夾所屬
[root@localhost] chown -R mysql.mysql /usr/local/mysql8/
二懊蒸、升級過程配置
2.1. 修改mysql配置文件,主要是mysql8.0部分悯搔,及sql_mode中的NO_ENGINE_SUBSTITUTION
編輯配置文件
[root@localhost] vim /etc/my.cnf
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
log-bin=mysql-bin
server-id=170
character_set_server=utf8
init_connect='SET NAMES utf8'
#basedir=/usr/local/mysql
#datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/run/mysqld/mysqld.pid
#不區(qū)分大小寫
lower_case_table_names =1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=5000
default-time_zone = '+8:00'
max_allowed_packet = 32M
#default_password_lifetime=90
#wait_timeout=600
# mysql8.0 add
collation-server=utf8_general_ci
basedir=/usr/local/mysql8
datadir=/usr/local/mysql/data
skip_ssl
default_authentication_plugin=mysql_native_password
2.2 開始升級
# 進入原mysql命令行
[root@localhost] mysql -uroot -p'123456'
# 查看mysql版本
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.26-log |
+------------+
1 row in set (0.00 sec)
mysql> show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1 |
+----------------------+-------+
1 row in set (0.00 sec)
# 確保數(shù)據(jù)都刷到硬盤上,更改成0
mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)
mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
Bye
使用安全模式啟動mysql8.0,正常啟動后可以進入到mysql命令行妒貌,如果沒啟動成功通危,需要查看日志cat /var/log/mysqld.log
解決后,再進入命令行
# 使用mysql8.0啟動
[root@localhost] /usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
# 進入mysql命令行
[root@localhost] mysql -uroot -p'123456'
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.27 |
+-----------+
1 row in set (0.00 sec)
mysql> exit;
Bye
2.2 配置環(huán)境變量
[root@localhost] vim /etc/profile
# add mysql
export PATH=$PATH:/usr/local/mysql8/bin
# 使環(huán)境變量生效
[root@localhost] source /etc/profile
查看客戶端版本配置
# 驗證版本
[root@localhost] which mysql
/usr/local/mysql8/bin/mysql
# 查看版本
[root@localhost] mysql -V
mysql Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)
如果客戶端版本不正確灌曙,可以修改軟鏈接菊碟,再重新查看
# 修改軟鏈接
[root@localhost] ln -snf /usr/local/mysql8/bin/mysql /usr/bin/mysql
三、配置啟動項
[root@localhost] cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld
# 修改啟動項目
[root@localhost] vim /etc/init.d/mysqld
# 修改目錄位置
basedir=/usr/local/mysql8
datadir=/usr/local/mysql/data
# 添加到啟動列表
[root@localhost] chkconfig --add mysqld
# 刷新啟動信息
[root@localhost] systemctl daemon-reload
# 查看啟動項列表
[root@localhost] chkconfig --list
重新啟動服務(wù)器沒有成功在刺,啟動的時候報錯沒有mysqld.pid文件逆害,創(chuàng)建后啟動成功
# 重啟動無法創(chuàng)建mysqld.pid文件處理方法
[root@localhost] cat /var/log/mysqld.log
[root@localhost] cd /run
[root@localhost] mkdir mysqld
[root@localhost] chown -R mysql.mysql ./mysqld
[root@localhost] cd mysqld
[root@localhost] touch mysqld.pid
[root@localhost] chown -R mysql.mysql ./mysqld.pid
[root@localhost] service mysqld start
Starting MySQL.. SUCCESS!