MySQL 5.7 升级到8.0
Posted 江洋大运
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 5.7 升级到8.0相关的知识,希望对你有一定的参考价值。
1.升级之前需要了解
①了解下mysql5.7和8.0的不同
默认字符集由latin1变为utf8mb4。
MyISAM系统表全部换成InnoDB表。
JSON特性增强。
支持不可见索引,支持直方图。
sql_mode参数默认值变化。
默认密码策略变更。
新增角色管理。
支持窗口函数,支持Hash join
②注意事项
注意字符集设置。为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和比较规则。
密码认证插件变更。为了避免连接问题,可以仍采用5.7的mysql_native_password认证插件。
sql_mode支持问题。8.0版本sql_mode不支持NO_AUTO_CREATE_USER,要避免配置的sql_mode中带有NO_AUTO_CREATE_USER。
是否需要手动升级系统表。在MySQL 8.0.16版本之前,需要手动的执行mysql_upgrade来完成该步骤的升级,在MySQL 8.0.16版本及之后是由mysqld来完成该步骤的升级。
2.具体升级过程
https://downloads.mysql.com/archives/community/
①上传mysql8.0 软件包,并解压
[root@mysql-1 ~]# tar -xf mysql-8.0.25-linux-glibc2.12-x86_64.tar
[root@mysql-1 ~]# tar -xf mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
[root@mysql-1 ~]# mv mysql-8.0.25-linux-glibc2.12-x86_64 /application/mysql8.0
[root@mysql-1 ~]# chown -R mysql.mysql /application/mysql8.0/
②备份修改配置文件
[ ]
[ ]
[ ]
user=mysql
basedir=/application/mysql8.0
datadir=/data/mysql
socket=/tmp/mysql.sock
server_id=6
socket=/tmp/mysql.sock
log_error=/data/logs/mysql.log
log_bin=/data/logs/mysql-bin
port=3306
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
character-set-server = utf8
collation_server = utf8_general_ci
skip_ssl
default_authentication_plugin=mysql_native_password
[ ]
socket=/tmp/mysql.sock
③进入mysql 5.7 数据库,命令行正常关闭数据库
[root@mysql-1 ~]# mysql -uroot -proot -e "select version();"
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------+
| version() |
+-----------+
| 5.7.26 |
+-----------+
[root@mysql-1 ~]# mysql -uroot -proot
mysql> show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1 |
+----------------------+-------+
1 row in set (0.00 sec)
mysql> set global innodb_fast_shutdown=0;
mysql> shutdown;
mysql> exit
④修改systemd管理启动mysqld
[ ]
cat >/etc/systemd/system/mysqld8.service <<EOF
[ ]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[ ]
WantedBy=multi-user.target
[ ]
User=mysql
Group=mysql
ExecStart=/application/mysql8.0/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
⑤修改环境变量
[root@mysql-1 ~]# vim /etc/profile
export PATH=/application/mysql8.0/bin:$PATH
⑥启动数据库
[ ]
[ ]
tcp6 0 0 :::33060 :::* LISTEN 67380/mysqld
tcp6 0 0 :::3306 :::* LISTEN 67380/mysqld
以上是关于MySQL 5.7 升级到8.0的主要内容,如果未能解决你的问题,请参考以下文章
centos 5.7 之前的服务器无法升级到 8.0。服务器启动失败