当前位置: 首页 > news >正文

Mysql5.7大限将至升级Mysql 8.0过程记录(未完)

一、前言

在这里插入图片描述
时间很快,到2023年10月底,MySQL 5.7就到了它的EOL(End of Life),届时将不会提供任何补丁,无法应对潜在的安全风险;是时候和 MySQL 5.7 说再见了!!!!回顾自Mysql5.7 版本2015年10月发布,它带来很多新的特性,比如:默认引擎改成了InnoDB,更新了安全策略,性能方面的提升,新增JSON数据类型,增强了sql模式及用户权限等等强大的功能。因此,这个版本自从发布之后一直受到业界的欢迎,也成为了众多开发者的首选数据库版本,至今仍被广泛使用于很多中小生产环境。各个MySQL发行版本官方提供5年的支持期限,MySQL和Percona还提供额外的3年补丁更新期限,总计提供8年的服务支持。2018年4月,MySQL 8.0 正式发布。

在这里插入图片描述

相关资源:Mysql 5.7.43发布说明、Mysql版本差异说明、Mysql平台兼容性、Mysql文档中心、Mysql5.7升级说明、升级Mysql8.0官网说明、Mysql EOL、Oracle lifetime-support、MariaDB、brary-mariadb、percona生命周期说明、版本对比、postgresql、Mysql8 LTS

二、Mysql生命周期

Mysql产品的生命周期分为三个支持阶段,标准支持服务、延伸支持服务和持续支持服务,一旦进入延伸支持阶段,MySQL仅在认为有必要升级的时候才会提供补丁,通常是为了解决安全性问题。对应这三个阶段的时间分别是产品从GA(正式发布)开始1-5年、6-8年及9年以上。
在这里插入图片描述
如下图所示,今年的10月份,5.7版本会停止延伸阶段支持,即2023年10月以后,停止发布补丁,Oracle 将不再为 MySQL 5.7 提供官方更新、错误修复或安全补丁。
在这里插入图片描述

ReleaseRelease DateEnd of life
MySQL 8.0April 19, 2018
MySQL 8.0April 19, 2018
MySQL 5.7October 21, 2015October 21, 2023
MySQL 5.6February 5, 2013February 5, 2021
MySQL 5.5December 3, 2010December 3, 2018
MySQL 5.1November 14, 2008December 31, 2013
MySQL 5.0January 9, 2012

Mysql 8.0x版本的长期稳定版(LTS)生命周期图,途中蓝色部分。

在这里插入图片描述

2.1、Mysql 5.7和8.0特性

1)MySQL 8.0 的新特性

  1. 原子 DDL
    一种原子数据定义语言 (DDL) 语句,用于组合对数据字典、存储引擎操作等所做的更新。

  2. 加密默认值
    已为表加密全局定义和实施加密默认值。 “default_table_encryption”变量用于为新创建的模式定义加密默认值。在创建模式时,可以借助“DEFAULT ENCRYPTION”子句定义模式的默认加密。默认密码策略变更。

  3. 资源组
    可以创建和管理资源组,并且服务器能够将线程分配给在服务器内运行的特定组的资源。组属性可用于控制资源、限制或授予线程使用资源的权限等。支持窗口函数,支持Hash join。

  4. 默认字符集
    版本更新后,默认字符集由‘latin1’改为‘utf8mb4’。新字符集“utf8mb4”有多个排序规则,其中包括“utf8mb4_ja_0900_as_cs”,这是 MySQL 中第一个可用于 Unicode 的日语特定排序规则。MyISAM系统表全部换成InnoDB表。支持不可见索引,支持直方图。sql_mode参数默认值变化。

  5. JSON 增强
    对 MySQL 的 JSON 功能进行了 JSON 增强,其中添加了“->>”,即内联路径运算符。这相当于对调用‘JSON_EXTRACT()’函数后得到的结果调用‘JSON_UNQUOTE()’函数。

  6. 对 DBA 的控制
    新增角色管理,DBA 已被授予根据工作负载修改属性的控制权。服务器确定虚拟 CPU 是否可用,具有所需权限的 DBA 可以使用这些 CPU 并将它们分配给某些资源组和线程。

2.2、MySQL5.7 vs 8.0

据相关经验表明,性能上测试如下,仅供参考:

1、读写模式下,mysql5.7.22和mysql8.0.15tps、qps性能差不多,mysql8.0.15在120线程并发时,性能出现了下降抖动:
2、只读模式下,mysql5.7.22的tps、qps比mysql8.0.15好1/3左右;并发线程数增加后,tps、qps并没有随着增加,反而出现了下降的趋势:
3、只写模式下,随着并发数的上升,mysql5.7.22的性能比mysql8.0.15好1/4左右。
4、读写模式下,并发数低时,mysql5.7.22性能好于mysql8.0.15;并发数比较高时,mysql8.0.15性能好于mysql5.7.22;在80线程的并发以上时,性能开始下降。
5、只读模式下,mysql5.7.22性能比mysql8.0.15好1/3左右;随着并发数的上升,性能也没有上升,反而有下降的趋势。
6、只写模式下,mysql5.7.22的tps抖动比较大;mysql5.7.22的qps比mysql8.0.15好1/3左右。

三、升级Mysql到8.0

3.1、升级前准备:

根据MySQL8.0官方升级教程,列举出以下几点注意事项:

1、注意字符集设置。为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和比较规则。
2、密码认证插件变更。为了避免连接问题,可以仍采用5.7的mysql_native_password认证插件。
3、sql_mode支持问题。8.0 版本sql_mode不支持NO_AUTO_CREATE_USER,要避免配置的sql_mode中带有NO_AUTO_CREATE_USER。
4、是否需要手动升级系统表。在MySQL 8.0.16版本之前,需要手动的执行mysql_upgrade来完成该步骤的升级,在MySQL 8.0.16版本及之后是由mysqld来完成该步骤的升级。

升级前检查工具,更多参看升级检查

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar #解压文件
tar zxvf mysql-8.0.34-el7-x86_64.tar.gz -C /usr/local/mysql8.0/ 
#更改目录属性
chown -R mysql.mysql /usr/local/mysql8.0/#MySQL提供mysql-shell验证方式,可以下载后进行验证,没有0.34:
wget https://cdn.mysql.com/archives/mysql-shell/mysql-shell-8.0.33-linux-glibc2.12-x86-64bit.tar.gztar -xf mysql-shell-8.0.33-linux-glibc2.12-x86-64bit.tar.gz
cd mysql-shell-8.0.33-linux-glibc2.12-x86-64bit/bin
./mysqlsh -uroot -p'123456' -S /tmp/mysql.sock -e "util.checkForServerUpgrade()"
#全备份
mysqldump -uroot -p'123456'  --all-databases  --lock-tables=0 > all.sql.bak.20231012
或
mysqldump -uroot -p'123456'  --all-databases  --single-transaction > all.sql.bak.20231012
3.2、配置部署
vim /etc/my.cnf [client]
port=3306
socket=/tmp/mysql.sock [mysqld]
log-bin=mysql-bin
server-id=100
character_set_server=utf8
init_connect='SET NAMES utf8'
socket=/tmp/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/run/mysqld/mysqld.pid
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1572864000
innodb_page_size=16384
innodb_undo_directory=./
innodb_undo_tablespaces=0
#不区分大小写
lower_case_table_names=1
#sql_mode要注意,8.0中有变化,不支持NO_AUTO_CREATE_USER,新增sql_mode中的NO_ENGINE_SUBSTITUTION
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 
max_connections=5000
default-time_zone = '+8:00'
max_allowed_packet = 32M
collation-server = utf8_general_ci
basedir=/usr/local/mysql8.0
datadir=/usr/local/mysql/data
skip_ssl
default_authentication_plugin=mysql_native_password

登录旧版本的数据库

mysql -uroot -p'123456' 
#查看mysql版本
mysql> select version();
mysql> show variables like 'innodb_fast_shutdown';
#确保数据都刷到硬盘上,更改成0
mysql> set global innodb_fast_shutdown=0;
mysql> shutdown;
mysql> exit;Bye

使用安全模式启动MySQL 8.0

/usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql & 
#登录新版本数据库
mysql -uroot -p'123456'
mysql> select version();
mysql> exit;
#配置环境变量
vim /etc/profile #增加下面的内写
export PATH=$PATH:/usr/local/mysql8/bin
source /etc/profile#客户端验证
which mysql
mysql -V
#导入数据
待补充#修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'xxxxx';#配置启动项
cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld
# 修改启动项目
vim /etc/init.d/mysqld  # 修改目录位置
basedir=/usr/local/mysql8
datadir=/usr/local/mysql/data# 添加到启动列表 
chkconfig --add mysqld
# 刷新启动信息
systemctl daemon-reload
# 查看启动项列表
chkconfig --list
#启动找不到pid
mkdir /var/tmp/mysql
touch /var/tmp/mysqlmysqld.pid
chown -R mysql.mysql /var/tmp/mysqlmysqld.pid

更多参见官网升级说明:跳转进入

相关文章:

Mysql5.7大限将至升级Mysql 8.0过程记录(未完)

一、前言 时间很快,到2023年10月底,MySQL 5.7就到了它的EOL(End of Life),届时将不会提供任何补丁,无法应对潜在的安全风险;是时候和 MySQL 5.7 说再见了!!!&…...

多架构环境下docker-compose部署rocketmq单机模式—— 筑梦之路

接上篇linux上构建任意版本的rocketmq多架构x86 arm镜像——筑梦之路-CSDN博客,本文适用于x86、arm等多架构环境。 话不多说,直接上代码。 准备broker配置文件 #broker配置文件示例 cat data/broker/conf/broker.conf brokerClusterName DefaultClus…...

[Unity][VR]Passthrough2-创建一个基本的Passthrough应用

上一期我们对PassthroughXR项目做好了基本的项目设置,今天我们就开始构建一个基本的Passthrough应用。 我们还是从基本场景开始。先把默认的main camera删除。因为后续我们会引入OVR Rig对象,这个对象自带Camera用来实现VR视角。 在Project面板我们搜索OVR camera rig。看见…...

【Unity3D赛车游戏制作】设置面板搭建——UGUI复合控件

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…...

如何让 Source Insight 识别 AUTOSAR 宏定义 FUNC

有很多从事汽车电子行业的软件工程师在使用Source Insight阅览Classic AUTOSAR协议栈源码的时候, 发现函数名无法解析,基本上都变成了FUNC。 先说原因: AUTOSAR的协议栈为了实现多平台和编译器兼容,大量使用宏定义来代替关键字。…...

sts搭建springboot

sts搭建springboot 需要的软件 Apache-maven-3.3.9.rar 链接:百度网盘 请输入提取码 提取码:1xgj Spring-tool-suite-4-4.20.0.RELEASE-e4.29.0-win32.win32.x86_64.self-extracting.jar 链接:百度网盘 请输入提取码 提取码:p…...

解决react使用css module无法重写bootstrap样式的问题

react使用css module虽然能够解决样式污染,但是同时也失去了写css样式的灵活性,特别是:在.module.css文件中当子元素是非变量的静态class类(比如bootstrap), 此时使用css选择器对该子元素的样式不会起作用的 比如下面…...

自动驾驶软件和人工智能

自动驾驶汽车的核心在于其软件系统,而其中的机器学习和深度学习技术是使车辆能够感知、理解、决策和行动的关键。本文将深入探讨这些技术在自动驾驶中的应用,包括感知、定位、路径规划以及道路标志和交通信号的识别。 1. 机器学习和深度学习在自动驾驶中…...

堆叠、集群技术

1.堆叠、集群技术的概述 堆叠、集群简介 堆叠(iStack),将多台支持堆叠特性的交换机通过堆叠线缆连接在一起,从逻辑上虚拟成一台交换设备,作为一个整体参与数据转发。 集群(Cluster Switch System&#xf…...

SpringCould微服务保护01——Sentinel组件下载并使用

1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被…...

可扩展性对物联网管理系统有哪些影响?

可扩展性对于物联网管理系统的设计和开发非常重要,它直接影响着系统的性能、可靠性和能耗等方面,是评估一个系统优劣的重要因素之一。可扩展性对物联网管理系统的影响主要体现在以下几个方面: 设备兼容性:物联网管理系统的可扩展性…...

洗地机哪个品牌最耐用质量好?2023年最好用的洗地机

随着科技的发展,人们的生活越来越便利,就拿打扫卫生来说,现在越来越多人抛弃扫把、地拖,转而选择让清洁更加轻松的清洁家电,而洗地机就是这样一种让打扫卫生变得简单轻松的家电。近年来洗地机销量剧增,是目…...

计算机视觉(Computer Vision, CV)是什么?

什么是计算机视觉 近年来,计算机视觉 (Computer Vision,简称CV) 不断普及,已成为人工智能 (AI) 增长最快的领域之一。计算机视觉致力于使计算机能够识别和理解图像和视频中的物体和人。 计算机视觉应用程序使用来自传感设备、人工智能、机器…...

【【萌新的SOC学习之自定义IP核 AXI4接口】】

萌新的SOC学习之自定义IP核 AXI4接口 自定义IP核-AXI4接口 AXI接口时序 对于一个读数据信号 AXI突发读 不要忘记 最后还有拉高RLAST 表示信号的中止 实验任务 : 通过自定义一个AXI4接口的IP核 ,通过AXI_HP接口对PS端 DDR3 进行读写测试 。 S_AXI…...

设计模式-创建型模式

文章目录 一、单例模式1.饿汉式(1) 静态变量(2) 静态代码块(3) 枚举方式 2.懒汉式(1) 双检锁(2) 静态内部类 3.破坏单例模式(1) 序列化(2) 反射 4.解决单例模式被破坏(1) 序列化、反序列化破坏单例模式的解决方法(2) 反射破坏单例解决 二、工厂方法模式1.简单工厂模式2.工厂方法…...

golang中的RSA算法,加密解密,签名校验,导出公钥密钥,导入公钥密钥

RSA算法广泛应用与数据加密(比如 SSL 传输层加密),数字签名(比如支付宝的支付签名)。 1、加密解密 // encrypts the given message with RSA-OAEP func f1() {// random 用来生成随机的素数rsaPriviteKey, err : rsa…...

修炼k8s+flink+hdfs+dlink(四:k8s(二)组件)

一:控制平面组件。 控制平面组件会为集群做出全局决策,比如资源的调度。 以及检测和响应集群事件,例如当不满足部署的 replicas 字段时, 要启动新的 pod)。 1. kube-apiserver。 该组件负责公开了 Kubernetes API&a…...

Android约束布局ConstraintLayout流式Flow

Android约束布局ConstraintLayout流式Flow <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.…...

Android JNI代码语法解释

文章目录 JNI中的JNIEXPORT、JNIIMPORT和JNICALLJVM如何查找native方法①按照JNI规范的命名规则②调用JNI提供的RegsterNatives函数&#xff0c;将本地函数注册到JVM中示例代码 JNI数据类型JNI字符串的处理①获取字符串②释放字符串③创建字符串④其他字符串处理API JNI中的JNI…...

小程序和前台开发软件定制的相关信息|APP网站搭建

小程序和前台开发软件定制的相关信息 在如今数字化时代&#xff0c;软件、小程序和前台开发软件定制已经成为了企业必备的工具之一。那么&#xff0c;这些工具到底有什么作用呢&#xff1f;接下来&#xff0c;我将为大家详细介绍。 首先&#xff0c;让我们来了解一下软件。软件…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

Spring Boot + MyBatis 集成支付宝支付流程

Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例&#xff08;电脑网站支付&#xff09; 1. 添加依赖 <!…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

边缘计算网关提升水产养殖尾水处理的远程运维效率

一、项目背景 随着水产养殖行业的快速发展&#xff0c;养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下&#xff0c;而且难以实现精准监控和管理。为了提升尾水处理的效果和效率&#xff0c;同时降低人力成本&#xff0c;某大型水产养殖企业决定…...

13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析

LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...