当前位置: 首页 > 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;让我们来了解一下软件。软件…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...