【DB】MySQL版本5.7和8的区别,以及升级的注意事项

文章目录

      • 1、MySQL版本5.7和8的区别
      • 2、MySQL 5.7升级8

1、MySQL版本5.7和8的区别

在数据库管理系统中,MySQL是一个广泛使用、开源的解决方案。它提供了强大的功能,同时具有优秀的性能和可扩展性。

MySQL 5的发布于2005年,在MySQL数据库的发展历史中具有重要的里程碑意义。
MySQL 8于2018年发布,引入了众多新功能和改进,以提供更高性能、更强安全性和更丰富的功能。

在这里插入图片描述

主要来说,升级的理由有以下:

  1. 性能提升级
    官方表示MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在读/写工作负载、IO 密集型工作负载、以及高竞争工作负载时相比MySQL5.7有更好的性能。

  2. 更强的NoSQL文档支持
    MySQL 从 5.7 版本开始提供 NoSQL 存储功能,目前在 8.0 版本中这部分功能也得到了更大的改进。该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的ACID合规性。

  3. 窗口函数
    也就是在满足某种条件的记录集合上执行的特殊函数。它可以用来实现若干新的查询方式。窗口函数与 SUM()、COUNT() 这种集合函数类似,但它不会将多行查询结果合并为一行,而 是将结果放回多行当中。即窗口函数不需要GROUP BY。窗口函数的使用,将大大提高相关的分析型场景的效率。

  4. UTF-8编码
    从MySQL8.0开始,使用utf8mb4作来MySQL的默认字符集,并支持Unicode 9,默认字符集将从 latin1改为utf8mb4,默认定序collation将从latin1_swedish_ci改为utf8mb4_800_ci_ai;

  5. 隐藏索引
    可以将索引通过命令设置为隐藏或显示。对于被隐藏的索引,它不会被查询优化器所使用,我们可以使用这一功能,对相关的查询进行性能调试,通过隐藏或显示,分析数据库性能差异的原因,同时也可以去除无效的索引。这个跟Oracle里面设置索引失效时一样的。

  6. 持久化设置
    MySQL8.0新增SET PERSIST的命令,该命令的配置值保存到数据目录下的mysqld-auto.cnf文件中,待重启后,读取该文件,用其中的配置覆盖缺省的配置文件,补充了SET GLOBAL命令只能临时生效的不足;

  7. 重构BLOB
    重构BLOB加速了片段读取/更新操作,可以加速JSON数据的操作。大幅改进了对JSON的支持,添加了基于路径查询参数从JSON字段中抽取数据的JSON_EXTRACT()函数,以及用于将数据分别组合到JSON数组和对象中的JSON_ARRAYAGG()和JSON_OBJECTAGG()聚合函数。

  8. 事务性数据字典
    完全脱离了MyISAM存储引擎,真正将数据字典放到InnoDB中的一些表中,不再需要 FRM、TRG、PAR 等文件;Information Schema现在以数据字典表的一个视图出现。也就是原则上可以不需要MyISAM数据表类型,系统表都可以放到InnoDB之中。

  9. SQL角色
    可以创建角色,给用户设置或去除角色,大大方便权限的管理。

  10. 除去查询缓存
    首先,查询缓存的效果取决于缓存的命中率,只有命中缓存的查询效果才能有改善,因此无法预测其性能。其次,查询缓存的另一个大问题是它受到单个互斥锁的保护。在具有多个内核的服务器上,大量查询会导致大量的互斥锁争用。

2、MySQL 5.7升级8

mysql从5.7升级到8.0是支持的,但是只支持GA版本的升级,并且要求版本为5.7.9或者更高
在升级到8.0之前,建议升级到5.7的最新版本。仅仅支持从5.7版本升级到8.0,不支持5.6版本升级到8.0

根据版本变化及官方升级教程,列举注意事项:

  • 注意字符集设置。为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和比较规则。
  • 密码认证插件变更。为了避免连接问题,可以仍采用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来完成该步骤的升级。

升级前准备:

  • 1、备份数据(包括当前的数据库和日志文件)

    --备份数据
    mysqldump -uroot -p ycapp_dflg_prod --single_transaction  --flush-logs --master-data=2 >/backup/ycapp.sql
    
  • 2、升级检查
    mysqlcheck -u root -p --all-databases --check-upgrade

  • 3、检查分区表(不支持分区的存储引擎)
    select table_schema,table_name from information_schema.tables where engine not in (‘innodb’,‘ndbcluster’) and create_options like ‘%partitioned’;

  • 4、在mysql数据库中,必须不存在与mysql8.0数据字典相同名称的表
    所有同名的表必须要重命名。

  • 5、必须要不存在外键超过64字符的表
    如果存在,必须修改表。

  • 6、必须要确保不存在拥有ENUM或者SET列元素并且超过255字符或者1020字节长度的表和存储过程

  • 7、mysql5.7中必须不使用8.0不支持的特性。例如NDB引擎,8.0不再支持;部分启动选项不再支持:例如–ignore-db-dir已被移除。

  • 8、如果innodb使用了XA事务,确保所有XA事务提交或者回滚。

  • 9、如果存在加密的innodb表空间,执行语句
    alter instance rotate innodb master key;

  • 10、停止数据库
    mysqladmin -u root -p shutdown

升级过程:

  • 1、下载解压安装包
    官网下载对应版本的tar包,可通过wget下载或者本地下载后上传。

  • 2、执行升级程序
    在mysql8.0.16版本后只需要使用新版本软件包启动MySQL Server,此时Server会自动检查并执行第一步升级操作,升级数据字典表。

  • 3、重启数据库并验证

  • 4、卸载旧mysql数据库

  • 5、设置MySQL8 自启动服务脚本

  • 6、设置环境变量

参考资料:1, 2, 3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/622453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实体企业品牌推广之困与解:迅腾文化如何助力企业“显”化品牌价值

在数字化浪潮的冲击下,许多实体企业面临着品牌推广的困境。由于缺乏系统的经验和网络资源的积累,这些企业在品牌推广过程中有很大提升空间。如何以低成本的方式有效推广品牌,成为了实体企业亟待解决的问题。迅腾文化从策略到设计,…

Linux第26步_在虚拟机中安装stm32wrapper4dbg工具

在Ubuntu下编译TF-A 或者 Uboot时,我们需要用到ST公司提供的stm32wrapper4dbg工具。stm32wrapper4dbg工具的源码下载地址为: GitHub - STMicroelectronics/stm32wrapper4dbg 记得我们在前面已经创建过的目录如下: 1)、在根目录下&#xf…

Windows项目部署流程

一、部署前需要的工作 ①配置环境变量:将所需的软件和工具的安装路径添加到系统的环境变量中,以便在命令行中可以直接使用。 ②部署项目文件:将项目的文件和代码复制到服务器上的指定目录中,例如Web服务器的网站根目录。 ③配置…

70.网游逆向分析与插件开发-角色数据的获取-自动化助手UI显示角色数据

内容参考于:易道云信息技术研究院VIP课 上一个内容:利用技能点属性分析角色数据基址-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:367aa71f60b…

WIndows系统重装、备份与恢复实操问题笔记

一 windows重装 1.1 基本步骤 下载大白菜根据官网使用教程制作启动u盘从MSDN或者微软官网下载Windows镜像根据查询的快捷键进入BIOS系统,设置U盘为第一启动 重装 1.2 Windows 11 激活 微软其实在2023年9月20日的公告中宣布停掉免费升级,数字激活工具…

Python之循环判断语句

一、if判断语句 1. if...else if 条件: 满足条件时要做的事情1 满足条件时要做的事情2 ...... else: 不满足条件时要做的事情1 不满足条件时要做的事情2 ...... # -*- coding:utf-8 -*- age input("请输入年龄:") age int(age) if age > 18:print("已经成…

一文读懂ERP、OMS、WMS、TMS(2/2)

目录 二、ERP、OMS、WMS、TMS的区别 2.1 ERP (Enterprise Resource Planning) 企业资源计划 2.2 OMS (Order Management System) 订单管理系统 2.3 WMS (Warehouse Management System) 仓库管理系统 2.4 TMS (Transportation Management System) 运输管理系统 二、ERP、OM…

代码随想录算法训练营第十八天|654.最大二叉树 617.合并二叉树.700.二叉搜索树中的搜索

654.最大二叉树 public TreeNode constructMaximumBinaryTree(int[] nums) {return getMaxTree(nums,0,nums.length-1); }public TreeNode getMaxTree(int[] nums, int head, int tail) {if (head > tail) {return null;}int maxIndex getMaxIndex(nums, head, tail);int …

Java8新特性-并行流与串行流

并行流parallel()与串行流(顺序流) sequential() 并行流 就是把 一个内容 分成多个数据块, 并用不同的线程分别处理每个数据块的流 Optional 类 Optional<T> 类 是一个容器类, 代表一个值存在或不村子, 原来用null 表示一个值不存在, 现在Optional类可以更好的表达这个概…

街机模拟游戏逆向工程(HACKROM)教程:[1]数据的存储与读取

简介 在计算机中&#xff0c;数据存储的介质一直在变化&#xff0c;从最早的穿孔纸带&#xff0c;到现在的固态硬盘。但存储的原理是一直没有变化的&#xff0c;在计算机中&#xff0c;我们所存储的数据&#xff0c;一直都是以二进制的形式被存储存在不同的介质中。 计算机用…

(十二)EEPROM的补充

文章目录 EEPROM补充篇读EEPROM补充内容写EEPROM补充内容单字节写入多字节拆成单字节写入现象 EEPROM补充篇 读EEPROM补充内容 对于上一篇博文在读EEPROM的时候&#xff0c;提到的DUMMY WRITE&#xff1a; 这里怎么理解呢&#xff1a; 大家看&#xff0c;写EEPROM的逻辑除了…

诊断服务通讯保持0X3E服务

通信保持0x3E是什么 通信保持0x3E是一种用于确保诊断服务或诊断通讯保持激活状态的机制。它通常用于汽车诊断过程中,通过周期性地发送请求帧来防止定时器发生超时,阻止自动跳转回默认会话状态。这样能够确保诊断服务或者之前激活的通信还处在激活的状态,并保持当前的非默认…

webstorm最新版 激活 成功了

使用webstorm开发工具 很完美&#xff0c;第一次用webstorm IDE 开发工具就完美的激活了&#xff0c;你也不妨试试 链接地址&#xff1a;http://mano100.cn/thread-1942-1-1.html 激活后如下

ABC336 A-E

明天F补完题就加上&#xff08;&#xff09; 放假了又能网瘾漏w 上周的abc太简单了这周的好难&#xff0c;E出了个数位dp想法以为是想复杂了结果还真是... Tasks - AtCoder Beginner Contest 336 A - Long Loong 题意&#xff1a; 输出龙的拼音&#xff0c;把o换成连续的…

Scratch优秀作品飞翔小鸟

程序说明&#xff1a;在无尽的划痕堆中飞驰而过随着你越来越多地飞进迷宫般的街区&#xff0c;平台变得越来越难。 演示视频 scratch飞翔小鸟 其实这就是一个类似像素小鸟的程序&#xff0c;只不过水管角色就地取材&#xff0c;使用scratch里面的积木图片拼成了水管&#xff0…

网站漏洞扫描 awvs 23.11下载 Acunetix Premium build 23.11 for Linux 完美版

Acunetix Premium build 23.11 for Linux 完美版 更新日志&#xff1a; 网站漏洞扫描 awvs 23.11下载 新功能 Java IAST 传感器已更新为支持 Java 17 并删除了对 AspectJWeaver 的要求对管理适用于 Docker 和 Linux 的 Acunetix On-Premises 服务的机制进行了更改&#xff0…

LabVIEW利用视频分析实现高效硬度测量

LabVIEW利用视频分析实现高效硬度测量 在材料硬度测量领域&#xff0c;自动化和高精度测试技术的需求不断上升。布氏硬度机的自动化测量系统&#xff0c;尤其是那些结合了LabVIEW视频识别和处理技术的系统&#xff0c;正日益成为行业的焦点。介绍一个使用LabVIEW软件和先进的视…

Qt框架学习 --- CTK

系列文章目录 文章目录 系列文章目录前言一、准备阶段二、使用介绍1.核心思想2.源码2.1.框架部分资源目录树2.2.框架部分源码2.3.插件部分资源目录树2.4.插件部分源码 3.文件结构4.运行效果 总结 前言 随着开发的深入&#xff0c;CTK框架还是要关注一下。了解CTK还是有必要的。…

4D 毫米波雷达:智驾普及的新路径(二)

4 4D 毫米波的技术路线探讨 4.1 前端收发模块 MMIC&#xff1a;级联、CMOS、AiP 4.1.1 设计&#xff1a;级联、单芯片、虚拟孔径 4D 毫米波雷达的技术路线主要分为三种&#xff0c;分别是多级联、级联 虚拟孔径成像技术、以及 集成芯片。&#xff08; 1 &#xff09;多级…

deepspeed 安装 Windows

目录 目录 Window下安装deepspeed 报错No module named torch._six&#xff1a; 升级安装 解决方法&#xff1a; Window下安装deepspeed pip install deepspeed0.3.16 报错No module named torch._six&#xff1a; Traceback (most recent call last): File "\\t…