记一次MySQL 5.7升级8.0的详细过程,聊聊我的思路,希望可以帮助大家。

以一个例子为切入点


一、升级背景

为什么要升级到MySQL8.0?大概多久进行一次?

大家可以参考下图记录的各个版本的发布时间,来确认各个版本的最终补丁日期:

从上图来看,当前处在官方支持生命周期的版本是MySQL 8.0, 其中MySQL 5.7处在Extended Support也就意味着只会做安全方面的更新,其它的方面不在处理,MGR的很多特性就没在往5.7中合并。所以当前最佳的方式是升级到MySQL 8.0。

升级大概可以分成三种情况:

a.、依据产品形态定位升级时间;

b.、依据服务的性能指标及成本做决定;

c.、依据于使用到的MySQL特性做决定。

以上三点,如果从升级的必要性角度看,可以反过来看。如果从业务角度出发可以正着看。

作为DBA最关注的就是MySQL的新特性,8.0解决了一些之前版本没有解决的问题,比如:

1、解决低版本没有彻底解决的BUG。

2、快速加列。目前使用PT工具变更百G以上大表风险极高,不仅时间很长而且变更期间占用大量磁盘IO,并且容易导致业务报错,比如大量出现锁等待和死锁等,对于核心业务还是很难接受,严重甚至会导致MySQL主从切换。

3、支持自增值持久化,解决MySQL 8.0之前版本重启后可能会导致依赖自增值的业务或者归档数据可能报错等问题。

4、JSON功能增强,如果之前有使用json数据类型的话,可以体验到更丰富的函数和同步性能提升等。

5、更好的MGR使用体验。

等等

二、升级准备及注意事项

1、了解8.0的一些功能。

参考:

https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

2、注意事项:

  • 验证插件
  • sql_mode
  • MySQL 8.0 Group by默认不排序,切换后可能会导致业务返回的结果不对。
  • Datetime类型字段的值,不能等于空字符串,否则直接报错。
  • 不建议直接使用MySQL 8.0二进制文件替换的方式进行直接升级。
  • 做好数据同步校验。
  • 在测试环境先做好兼容性测试,避免业务存在使用了一些MySQL 8.0移除的函数、关键字或者语法等。
  • ETL流程要做好兼容MySQL 8.0。
  • 程序驱动不兼容部分已经移除或者改名的变量,需升级驱动。
  • my.cnf配置信息调整
  • 最少停机时间,同样生产数据恢复到环境,进行模拟升级,评估时间
  • 考虑回滚方案
  • 数据库备份

3、检查工具。

参考:
https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-upgrade.htm

三、升级过程

1、官网下载对应的升级包

参考
https://downloads.mysql.com/archives/community/

下面是单机升级,高可用架构下需要先升级从库,在逐步升级主库。

执行mysql_upgrade命令,会提示如下:

#/mysql8.0.19/bin/mysql_upgrade -uroot -p

在MySQL 8中mysql_upgrade客户端现已弃用。升级客户端执行的操作现在由服务器完成。要升级,请使用较旧的数据目录启动新的 MySQL 二进制文件。自动修复用户表。升级后不需要重新启动。
所以必须在测试环境模拟准备对应SQL语句

2、操作步骤:

登录服务器进行正常关闭:innodb_fast_shutdown是默认是1,常常认为是安全关闭

关闭innodb参数确认
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.01 sec)

mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)
备份。

启动mysql服务

登录服务器确认
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.19 |
+-----------+
1 row in set (0.01 sec)

验证业务是否正常。

更多精彩内容,关注我们▼▼

MySQL 5.7升级8.0过程(详解)的更多相关文章

  1. MySQL5.7升级到8.0过程详解

    前言: 不知不觉,MySQL8.0已经发布好多个GA小版本了.目前互联网上也有很多关于MySQL8.0的内容了,MySQL8.0版本基本已到稳定期,相信很多小伙伴已经在接触8.0了.本篇文章主要介绍从 ...

  2. win10下vs2015配置Opencv3.1.0过程详解

    下载安装Opencv3.1.0 下载Opencv3.1.0,进入官网,点击opencv for windows即可下载.  点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为 ...

  3. win10下vs2015配置Opencv3.1.0过程详解(转)

    下载安装Opencv3.1.0 下载Opencv3.1.0,进入官网,点击opencv for windows即可下载.  点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为 ...

  4. MySQL关闭过程详解和安全关闭MySQL的方法

    MySQL关闭过程详解和安全关闭MySQL的方法 www.hongkevip.com 时间: -- : 阅读: 整理: 红客VIP 分享到: 红客VIP(http://www.hongkevip.co ...

  5. mysql中SQL执行过程详解与用于预处理语句的SQL语法

    mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...

  6. Mysql加锁过程详解(8)-理解innodb的锁(record,gap,Next-Key lock)

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  7. Mysql加锁过程详解(2)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  8. Mysql加锁过程详解(3)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  9. Mysql加锁过程详解(4)-select for update/lock in share mode 对事务并发性影响

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  10. Mysql加锁过程详解(7)-初步理解MySQL的gap锁

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

随机推荐

  1. LeetCode-846 一手顺子

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/hand-of-straights 题目描述 Alice 手中有一把牌,她想要重新排列这些牌,分成 ...

  2. vue3.0中ref动态绑定

    // 自己使用 <div v-for="item in ['lisi','wanger']" :key="item"> <test :ref= ...

  3. Oracle DataGuard 出现 GAP 修复

    下面我们通过实验来进行演示如何修复: 一.主库切几个最新的归档,然后手工删掉,重新开启DG同步. 1.备库关闭应用日志和数据库 SQL> ALTER DATABASE RECOVER MANAG ...

  4. Windows常用快捷键(但我本人不太熟知的)

    Shift+Ctrl+ESC: 打开任务管理器 Windows+E: 打开文件资源管理器 Windows+R: 运行文件 Windows+Tab: 切换应用程序 Shift+Delete: 永久删除

  5. '大龄‘后端程序员,快速捡起ECMAScript6

    1.Promise 2.迭代器 3.async 4.module 5. this的理解

  6. WSL2安装nvm并配置npm镜像源

    1.下载安装脚本并执行 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash 2.关闭命令行后 ...

  7. HUAWEI--配置单臂路由

    HUAWEI--配置单臂路由 1.在LSW1中创建vlan10和vlan20 [LSW1]vlan batch 10 20 2.接口Eth0/0/2配置trunk,放行vlan10和20,接口Eth0 ...

  8. ubuntu下升级gcc11环境

    使用ppa源升级 官网地址: https://launchpad.net/ ppa toolchan/test地址: https://launchpad.net/~ubuntu-toolchain-r ...

  9. Software_programming_tools_IDEA

    13:45:55 key promtoer 快捷键提示插件

  10. 《CSOL大灾变》Mobile移植记录——购买区域

    在CSOL大灾变模式中,购买武器只能出现在特定区域,如下:    这里可以通过添加一些不渲染的BOX(如图中的蓝色BOX)作为触发器,然后检测玩家与之触发后才能弹出购买菜单. 在JmonkeyEngi ...