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

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

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

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

相关文章

C++语言实现网络爬虫详细代码

当然&#xff01;下面是一个用C语言实现的基本网络爬虫的详细代码示例&#xff1a; #include <iostream> #include <string> #include <curl/curl.h> size_t writeCallback(void* contents, size_t size, size_t nmemb, std::string* output) {size_t totalS…

强化科技创新“辐射力”,中国移动的数智化大棋局

作者 | 曾响铃 文 | 响铃说 丝滑流畅的5G连接、每时每刻的数字生活服务、无处不在的智能终端、拟人交流的AI助手、梦幻般的XR虚拟现实、直接感受的裸眼3D…… 不知不觉&#xff0c;那个科幻片中的世界&#xff0c;越来越近。 数智化新世界的“气氛”&#xff0c;由一个个具…

GEE 18:基于GEE平台的土地荒漠化监测与分析【论文复现】

Desertification 1. 研究背景1.1 参考论文1.2 参数获取1.2.1 NDVI1.2.2 Albedo1.2.3 Normalizing indices1.2.4 Calculating the quantitative relationship1.2.5 Calculating DDI2. GEE2.1 数据2.2 GEE code2.2.1 Study region2.2.2 Reomove cloud for Landsat-82.2.3 Calcula…

CISA 彻底改变了恶意软件信息共享:网络安全的突破

在现代网络安全中&#xff0c;战术技术和程序&#xff08;TTP&#xff09;的共享对于防范网络事件至关重要。 因此&#xff0c;了解攻击向量和攻击类型之间的关联如今是让其他公司从其他公司遭受的 IT 事件中受益&#xff08;吸取经验教训&#xff09;的重要一步。 美国主要网…

PyTorch入门教学——使用PyCharm创建一个PyTorch项目

首先需要创建好PyTorch的虚拟环境&#xff0c;步骤&#xff1a;PyTorch入门教学——简介与环境配置-CSDN博客打开PyCharm&#xff0c;新建项目&#xff0c;选择项目的存放位置。选择先前配置的解释器&#xff0c;也就是虚拟环境中的解释器。&#xff08;记住创建的虚拟环境所在…

【Express】服务端渲染(模板引擎 EJS)

EJS&#xff08;Embedded JavaScript&#xff09;是一款流行的模板引擎&#xff0c;可以用于在Express中创建动态的HTML页面。它允许在HTML模板中嵌入JavaScript代码&#xff0c;并且能够生成基于数据的动态内容。 下面是一个详细的讲解和示例&#xff0c;演示如何在Express中…

Linux:Mac VMware Fusion13以及CentOS7安装包

Linux&#xff1a;Mac VMware Fusion13以及CentOS7安装包 1. Mac VMware Fusion132. CentOS7安装包3. 安装 1. Mac VMware Fusion13 下载官网地址&#xff1a;https:www.vmware.com/products/fusion/fusion-evaluation.html 2. CentOS7安装包 注意是m芯片需要使用arm架构的i…

手动下载/安装Xcode的simulator

目录 前言解决方案1.获取simulator包下载地址1.1 Apple后台1.2 手动 2.使用三方下载工具下载3.使用命令安装simulator 前言 Xcode某个版本更新之后不带iOS的Simulator,导致全新下载一个Xcode后没法编译项目.公司的网又很坑,每次断掉点重试都重新下载,导致完全没法下下来.特别影…

论文阅读:Seeing in Extra Darkness Using a Deep-Red Flash

论文阅读&#xff1a;Seeing in Extra Darkness Using a Deep-Red Flash 今天介绍的这篇文章是 2021 年 ICCV 的一篇 oral 文章&#xff0c;主要是为了解决极暗光下的成像问题&#xff0c;通过一个深红的闪光灯补光。实现了暗光下很好的成像效果&#xff0c;整篇文章基本没有任…

Go-Python-Java-C-LeetCode高分解法-第十周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接&#xff1a;LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏&#xff0c;每日一题&#xff0c;和博主一起进步 LeetCode专栏 我搜集到了50道精选题&#xff0c;适合速成概览大部分常用算法 突…

FutureTask的测试使用和方法执行分析

FutureTask类图如下 java.util.concurrent.FutureTask#run run方法执行逻辑如下 public void run() {if (state ! NEW ||!RUNNER.compareAndSet(this, null, Thread.currentThread()))return;try {Callable<V> c callable;if (c ! null && state NEW) {V res…

【大数据】Hive SQL语言(学习笔记)

一、DDL数据定义语言 1、建库 1&#xff09;数据库结构 默认的数据库叫做default&#xff0c;存储于HDFS的&#xff1a;/user/hive/warehouse 用户自己创建的数据库存储位置&#xff1a;/user/hive/warehouse/database_name.db 2&#xff09;创建数据库 create (database|…

【教程】使用vuepress构建静态文档网站,并部署到github上

官网 快速上手 | VuePress (vuejs.org) 构建项目 我们跟着官网的教程先构建一个demo 这里我把 vuepress-starter 这个项目名称换成了 howtolive 创建并进入一个新目录 mkdir howtolive && cd howtolive使用你喜欢的包管理器进行初始化 yarn init 这里的问题可以一…

nodejs+vue百鸟全科赏析网站

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

通过示例详细了解ES6导入导出模块

通过示例详细了解ES6导入导出模块 似乎许多开发人员认为 ES6 模块只不过是export、import关键字。事实上&#xff0c;它更加多样化。它拥有强大的功能和鲜为人知的问题。在本文中&#xff0c;我们将使用一些示例来了解这些内容。 示例一 // index.mjs import { default } fr…

深度学习-卷积神经网络

文章目录 应用卷积神经网络卷积处理分类问题 应用 图片分类图片检索图片分割图片风格迁移姿态估计OCR等 卷积神经网络 核概念计算机视觉中处理图片的核大小是通过经验得来的&#xff0c;而深度学习中的权重大小是自己学习出的。卷积VS神经网络&#xff1a;一个是局部观察一个…

【实操】基于ChatGPT构建知识库

前言 最近有些实践&#xff0c;因为后面要去研究fine-tune了&#xff0c;想着记录一下chatgpt向量数据库构建知识库的一些实操经验&#xff0c;不记我很快就忘了&#xff0c;哈哈。 首先&#xff0c;提一下为啥会出现向量数据库这个技术方案&#xff1f; 大家经过实践发现&…

【传输层协议】UDP/TCP结构特点与原理(详解)

文章目录 1. UDP1.1 UDP结构1.2 UDP特点1. 无连接2. 不可靠3. 面向数据报4. 缓冲区5. 大小受限6. 无序性 2. TCP2.1 TCP结构2.2 TCP特点1. 有连接2. 可靠性3. 面向字节流4. 拥塞控制5. 头部开销 2.3 TCP原理1. 确认应答&#xff08;安全机制&#xff09;2. 超时重传&#xff08…

数据结构与算法--其他算法

数据结构与算法--其他算法 1 汉诺塔问题 2 字符串的全部子序列 3 字符串的全排列 4 纸牌问题 5 逆序栈问题 6 数字和字符串转换问题 7 背包问题 8 N皇后问题 暴力递归就是尝试 1&#xff0c;把问题转化为规模缩小了的同类问题的子问题 2&#xff0c;有明确的不需要继续…

使用Elasticsearch来进行简单的DDL搜索数据

说明&#xff1a;Elasticsearch提供了多种多样的搜索方式来满足不同使用场景的需求&#xff0c;我们可以使用Elasticsearch来进行各种复制的查询&#xff0c;进行数据的检索。 1.1 精准查询 用来查询索引中某个类型为keyword的文本字段&#xff0c;类似于SQL的“”查询。 创…