首页 > 数据库 >MySQL 5.7升级8.0过程(详解)

MySQL 5.7升级8.0过程(详解)

时间:2024-04-26 10:35:12浏览次数:17  
标签:8.0 5.7 MySQL 升级 shutdown mysql

记一次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,常常认为是安全关闭

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;
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)

验证业务是否正常。

标签:8.0,5.7,MySQL,升级,shutdown,mysql
From: https://www.cnblogs.com/ataoxz/p/18159429

相关文章

  • 2023最新!MySQL8于win10环境下的安装配置保姆级教程
    2023最新!MySQL8于win10环境下的安装配置保姆级教程MySQL官网:https://www.mysql.com/downloads/导航目录2023最新!MySQL8于win10环境下的安装配置保姆级教程导航一、MySQL下载二、安装MySQLchoosingaSetupTypeselectproductsdownloadselectfeaturestoinstallInstallation......
  • MySQL—MySQL的存储引擎之InnoDB
    MySQL—MySQL的存储引擎之InnoDB存储引擎及种类存储引擎说明MyISAM高速引擎,拥有较高的插入,查询速度,但不支持事务InnoDB5.5版本后MySQL的默认数据库存储引擎,支持事务和行级锁,比MyISAM处理速度稍慢ISAMMyISAM的前身,MySQL5.0以后不再默认安装MRG_MyISAM将多......
  • FLINKCDC 3.0整库同步MYSQL至DORIS(FLINK1.18): 历程
    大数据技术涉及组件较多,各个环境较DEMO又不尽相同,所以参照DEMO进行,任然很多报错信息出现。如下报错处理,尽供参考:1.创建同步配置文件################################################################################Description:SyncMySQLalltablestoDoris#########......
  • Ubuntu 16.04 LTS 升级到 Ubuntu 18.04 LTS
    Ubuntu从16.04升级到18.04版本_ubuntu16upgrade了18的库-CSDN博客......
  • kubernetes1.28.0配合apisix-ingress安装过程【1】
    环境介绍主机信息注意:由于资源有限,通过三台vmware虚拟机进行安装。主机名IP操作系统配置k8s-master192.168.199.101Centos7.92CPU、4G内存、100G磁盘k8s-node01192.168.199.102Centos7.92CPU、4G内存、100G磁盘k8s-node02192.168.199.103Centos7......
  • 记录MySQL分页数据重复问题
    1、准备数据2、sql查询1、查询第一页的结果select*fromtestlimit0,3;2、查询第二页的结果select*fromtestlimit1,3;3、查询第三页的结果select*fromtestlimit2,3;3、结果由上图所示,每次分页都有重复数产生4、原因我们知道orderby排序的时......
  • mysql系列04---索引及性能分析
    1、索引的结构 mysql索引的数据结构,对经典的B+Tree进行了优化,在原B+Tree上增加了一个指向相邻叶子结点的链表指针,就形成了一个带有顺序指针的B+Tree,提高了区间访问的性能。 选择B+Tree的优点:a、相对于二叉树,层级更少,搜索效率更高b、相对于B-Tree,B+Tree只在叶子节点上存储......
  • Mysql8 设置允许远程连接 (Windows环境)
    1.Windows防火墙开放端口3306: 2.修改mysqlmy.ini配置文件(C:\ProgramData\MySQL\MySQLServer8.0)添加或修改允许所有IPbind-address=0.0.0.03.Windows打开CMD命令窗口--登录mysqlmysql-uroot-p;--添加权限grantallon*.*to'root'@'localhost';--刷新......
  • MySQL - [13] binlog、redolog、undolog、delaylog
    题记部分 binlog    redolog      undolog  3.1、什么是undo log事务是需要保证原子性的,也就是说,事务中的操作要么全部完成,要么什么也不做。但有如下情况,会造成事务执行不完。①事务执行过程中可能遇到各种错误,比如:代码bug出现异常。②......
  • MySQL中实现支持Emoji表情存储
    MySQL中实现支持Emoji表情的存储要让MySQL支持Emoji,详细步骤:步骤1:确认MySQL版本确保您使用的MySQL版本至少为5.5.3,因为这是开始支持utf8mb4字符集的起始版本。如果您当前的版本低于此要求,您需要先升级MySQL到一个支持utf8mb4的较新版本。步骤2:检查现有表结构查看您的数据库、......