mysql 5.7 mysql js_生产库升级mysql 5.7.28版本到8.0.20

前言

服务器系统版本:CentOS Linux release 7.3.1611 (Core)

mysql版本: 5.7.28

升级版本:8.0.20

mysql架构为keepalived + mysql 实现双主热备,主从复制。升级时建议先升级从库。

升级mysql8.0.x版本需要注意的新特性:

MySQL8.0以下几点新特性:

默认字符集为utf8mb4。

MyISAM系统表全部换成InnoDB表。

JSON特性增强。

支持不可见索引,支持直方图。

sql_mode参数默认值变化(不支持NO_AUTO_CREATE_USER)。

默认密码策略变更。(新的认证插件caching_sha2_password,旧的为mysql_native_password)

可通过在配置文件[mysqld] 下配置

或使用sql修改alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘root’;

新增角色管理。

支持窗口函数,支持Hash join。

1.下载 mysql

Operating System 这里 Linux -Generic代表是通用的,选择通用的Linux通用64位即可。

313daafc04154e5fabe2bac29b9fafce.png

2.上传解压

# 上传到 /usr/local/

cd /usr/local/

# 解压安装包

xz -d mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz # 这一步执行时间大概两三分钟,卡住一会正常

tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar

# 上面解压也可以使用这条命令直接搞定 tar -Jxf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

# 文件夹重命名为mysql8

mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql-8.0.20

# 更改文件夹所属

chown -R mysql.mysql /usr/local/mysql-8.0.20/

3.更改配置文件my.cnf, 针对8.0.x版本升级,主要修改以下几点即可,其他的默认不要修改。

# 修改为mysql8解压目录

basedir=/usr/local/mysql-8.0.20

# 默认字符集 utf8

character-set-server = utf8

# 排序规则

collation_server = utf8_general_ci

# 跳过ssl验证

skip_ssl

# mysql8默认加密认证插件为caching_sha2_password,改回旧版本的加密认证方式

default_authentication_plugin=mysql_native_password

# 8.0版本sql_mode不支持NO_AUTO_CREATE_USER,要避免配置的sql_mode中带有NO_AUTO_CREATE_USER。

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

执行升级程序

注:执行升级程序前建议全备份所有数据,并且如果有主从时先优先升级从库。

4.1 关闭数据库

# 进入mysql

mysql> show variables like 'innodb_fast_shutdown';

+----------------------+-------+

| Variable_name | Value |

+----------------------+-------+

| innodb_fast_shutdown | 1 |

+----------------------+-------+

1 row in set (0.00 sec)

# 确保数据都刷到硬盘上,更改成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

4.2直接用mysql8客户端启动

/usr/local/mysql-8.0.20/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

4.3重新登陆,登陆提示和select version都可以看到版本升级到8.0.20

[root@localhost mysql-8.0.20]# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 125

Server version: 8.0.20 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();

+-----------+

| version() |

+-----------+

| 8.0.20 |

+-----------+

1 row in set (0.00 sec)

完结,这个过程中有些特性(配置文件)没有搞好可能就会导致失败,从库升级完之后主库同样操作即可,特别要注意的是旧版本配置的datadir目录,也就是数据存放目录在升级版本时不要改动这个配置。

附录一:

Innodb_fast_shutdown告诉innodb在它关闭的时候该做什么工作。有三个值可以选择:

1)0 表示在innodb关闭的时候,需要purge all, merge insert buffer,flush dirty pages。这是最慢的一种关闭方式,但是restart的时候也是最快的。后面将介绍purge all,merge insert buffer,flush dirty pages这三者的含义。2)1 表示在innodb关闭的时候,它不需要purge all,merge insert buffer,只需要flush dirty page。

3)2 表示在innodb关闭的时候,它不需要purge all,merge insert buffer,也不进行flush dirty page,只将log buffer里面的日志flush到log files。因此等下进行恢复的时候它是最耗时的。

本文地址:https://blog.csdn.net/weixin_41645232/article/details/107189907

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值