再见 MySQL 5.7 !

news2024/11/25 20:40:49

点击下方名片,设为星标

回复“1024”获取2TB学习资源!

对从事互联网 IT 技术岗位的来说,数据库也是我们日常必备的技能之一,而 MySQL 数据库更是常见、常用的数据库之一。

d9777998e0f4df7e3892dbd7551e97ea.png

根据 DB-Engines 的数据显示,MySQL 是全球最流行的开源数据库,并且在过去十多年中一直排名第二。b3ecead964bb15e65496a2e0e2e3fb4a.png数据来源:DB-Engines 官方网站截图,详细数据:https://db-engines.com/en/ranking

MySQL 的发展史

MySQL 的历史可以追溯到1979年,它的创始人叫作Michael Widenius,他在开发一个报表工具的时候,设计了一套API,后来他的客户要求他的API支持sql语句,他直接借助于 mSQL 的代码,将它集成到自己的存储引擎中。但是他总是感觉不满意,故萌生了要自己做一套数据库的想法。2a9ca6afb596a3f7da7e6fd005df8501.png1996 年 MySQL 1.0发布,同年 10 月 MySQL 3.11.1 发布了 Solaris 的版本,一个月后,Linux 版本发布,从那时候开始,MySQL 慢慢的被大众所接受。

1999 年,Michael Widenius 成立了 MySQL AB 公司,MySQL 由个人开发转变为团队开发,2000 年使用 GPL 协议开源。

2010 年 12 月,MySQL 5.5 发布,Oracle 也把 InnoDB 做成了 MySQL 默认的存储引擎,MySQL 从此进入了辉煌发展的时期。

2015年10月,MySQL 5.7 版本发布,它带来很多新的特性,比如:默认引擎改成了InnoDB,更新了安全策略,性能方面的提升,新增JSON数据类型,增强了sql模式及用户权限等等强大的功能。因此,这个版本自从发布之后一直受到业界的欢迎,也成为了众多开发者的首选数据库版本。

2018年4月,MySQL 8.0 正式发布。

下面我们一同回顾一下各大版本的生命周期,重温一下这些经典的版本。

MySQL 大版本生命周期

下面是各个版本的生命周期时间范围:

Release        Release Date            End of life  

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

下面是来自官方给出的一份生命周期数据:14d3a5ceed574d1965863d0077aa8fdd.png在 2023 年 10 月 21 日,MySQL 5.7 将达到其生命周期的终点(EOL,End of Life)。这意味着 Oracle 将不再为 MySQL 5.7 提供官方更新、错误修复或安全补丁。

因此,随着 MySQL 5.7 EOL 到来,我们升级到一个更高的新版本,这样便于得到官方更好的更新支持,应该来说是一个最简单、最直接的方案。

但是,我们是否有其他选择呢?可以寻找一个更加完美的替代方案呢?我想,还是需要去实际的生产需求出发,对于数据库来说,安全是第一要务。不能因为迁移导致数据安全事故,这就得不偿失了。

MySQL 各个版本使用占比

184fb632f2e339538283baf01320f513.png

想学习更多的MySQL数据库的知识体系可以来专栏:MySQL 打怪升级进阶成神之路(2023 最新版)!从第一篇文章开始,我们逐步详细介绍了 MySQL 数据库的基础知识,如:数据类型、存储引擎、性能优化(软、硬及sql语句),MySQL 数据库的高可用架构的部分,如:主从同步、读写分离的原理与实践、跨城容灾、数据的备份与恢复等,然后介绍了 MySQL 的管理命令、数据库语言的命令、库与表的管理工具、性能分析与工具的使用、MySQL 数据库服务器的硬件选型、性能监控、开发设计规范等知识。

升级 Or 迁移?

升级到8.0版本

上面也提到了,这是最直接、最安全、最方便的一种方案。升级之前想要了解8.0版本特性的可以参阅:MySQL 8.0 的 5 个新特性,太实用了!MySQL 从版本 5.7 开始提供了 NoSQL 存储的功能,在 8.0 中这部分功能也得到了一些改进(MySQL 5.7 vs 8.0,哪个性能更牛?)。

升级过程大概如下:

下载安装包

下载地址:https://downloads.mysql.com/archives/community/,注:如果是集群高可用架构,先升级从库。

备份数据

这是必须要做的,一定要备份数据,备份完成后一定要检查数据的完整性。

升级

建议先在测试环境进行升级版本测试,测试完成之后再进行生产环境的版本升级操作。

#下载安装包
[root@localhost] wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
 
#解压文件
[root@localhost] tar zxvf mysql-8.0.30-el7-x86_64.tar.gz -C /usr/local/mysql8.0/
 
#更改目录属性
[root@localhost] chown -R mysql.mysql /usr/local/mysql8.0/

修改配置文件

# 编辑配置文件
[root@localhost] 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
#不区分大小写
lower_case_table_names =1
 
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
 
#mysql8.0
collation-server=utf8_general_ci
basedir=/usr/local/mysql8.0
datadir=/usr/local/mysql/data
skip_ssl
default_authentication_plugin=mysql_native_password

升级

#登录旧版本的数据库
[root@localhost] mysql -uroot -p'123456'
 
#查看mysql版本
mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.23-log |
+------------+
1 row in set (0.00 sec)
 
mysql> show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1     |
+----------------------+-------+
1 row in set (0.00 sec)
 
#确保数据都刷到硬盘上,更改成0
mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)
 
mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
Bye

使用安全模式启动MySQL 8.0

#启动新版本数据库
[root@localhost] /usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
 
#登录新版本数据库
[root@localhost] mysql -uroot -p'123456'
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.33    |
+-----------+
1 row in set (0.00 sec)
 
mysql> exit;
Bye

配置环境变量

[root@localhost] vim /etc/profile
#增加下面的内写
export PATH=$PATH:/usr/local/mysql8/bin
[root@localhost] source /etc/profile

查看客户端版本

[root@localhost] which mysql
/usr/local/mysql8/bin/mysql
[root@localhost] mysql -V
mysql  Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)

升级过程中肯定会出现一些错误,遇到错误就根据提示来解决就可以。每一次的安装、升级都是一个学习进步的过程。升级完成之后,导入数据,记得修改数据库的密码。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'xxxxx';

迁移

近此年来,越来越多的开发人员倾向于为他们正在开发的应用程序选择 PostgreSQL。从相关的数据来看,PostgreSQL 从 2014 年开始进入高速增长状态,而 MySQL 自 2016 年以来开始缓慢下降。

目前 PostgreSQL 可以运行在所有主流操作系统上,包括 Linux、Unix 和 Windows。所以,有不少企业会选择将 MySQL 迁移到 PostgreSQL 。

相较于 MySQL,PostgreSQL 还有一些明显的特点,比如,支持更广泛的高级数据类型,更精细的索引系统,支持用各种语言编写的存储过程,也确实能够满足绝大多数企业级应用的需求。

MySQL 与 PostgreSQL 比较,哪个更好、我们该选用哪个?可以参阅这篇之前推送过的文章。同样 PostgreSQ 也有它不适用的场景,所以,是否能够满足你的迁移需求,不能一概而论,而是要从实际的业务场景出发。

更多关于 PostgreSQL 系列的学习文章,请参阅:PostgreSQL 数据库 这个专栏。官网地址: https://www.postgresql.org。

无论你最终是选择升级版本,还是寻求替代方案,我不得不再次提醒你,MySQL5.7 在 2023 年 10 月将结束支持,之后官方将不会提供任何补丁更新,为了数据安全与数据库的稳定,请提前做好预备方案。

我们也是时候和 MySQL 5.7 说再见了!!!!

读者专属技术群

构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。

扫码加我好友,拉你进群

dbeb3b945b2a983686d98a1a14f35297.jpeg

推荐阅读 点击标题可跳转

一款比Elasticsearch更牛逼的轻量级搜索引擎

号称 “真正自主研发”!中国首款自研 IDE 正式亮相

不会用这个工具,你的 Linux 服务器就是个摆设!

互联网大事件!宇宙第一 IDE 放弃了 Mac

打脸了!微软竟然发布了自己的 Linux

IPv4 开始收费!或将是一场新的 IT 灾难

0fb5725b6ba6104e226f3d4b763444a8.png

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。点在看支持我们吧!

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

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

相关文章

Matlab之DICOM(数字图像和通信医学)格式图像数据读取函数dicomread

一、DICOM是什么? DICOM是数字图像和通信医学格式的图像数据,在MATLAB中,可以使用dicomread函数读取DICOM格式的图像数据。 二、dicomread函数 使用方法如下: imageData dicomread(filename);其中,filename表示DI…

fail-safe 机制与 fail-fast 机制

Fail-fast 表示快速失败,在集合遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出 ConcurrentModificationException 异常,从而导致遍历失败,像这种情况 定义一个 Map 集合,使用 Iterator 迭代器进行数据…

live-server安装

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【算法专题突破】滑动窗口 - 长度最小的子数组(9)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:209. 长度最小的子数组 - 力扣(Leetcode) 要注意的是,题目给的是正整数, 而题目要求并不难理解,就是找最短的…

听说背包问题很难? 这篇总结篇来拯救你了

文章转自代码随想录 已经把背包问题都讲完了,那么现在要对背包问题进行总结一番。 背包问题是动态规划里的非常重要的一部分,所以我把背包问题单独总结一下,等动态规划专题更新完之后,我们还会在整体总结一波动态规划。 关于这…

【HCIE】02.IGP高级特性

OSPF转发地址 5类LSA报文格式 5类LSA有一个Forwarding address字段,防止次优路由产生 次有路径的产生 如图,A与C运行OSPF协议,A与B运行ISIS协议,现在将ISIS导入到了OSPF中,C去访问X默认会先经过ASBR即R1,…

【多线程】Timer任务定时器实现与盲等原子性问题的解决

目录 一、定时器 二、标准库中的Timer 三、代码实现 四、死锁 一、定时器 代码中的定时器通常是在一定的时间执行对应的代码逻辑 二、标准库中的Timer public static void main(String[] args){Timer timer new Timer();timer.schedule(new TimerTask() {Overridepublic…

【周末闲谈】如何利用AIGC为我们创造有利价值?

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 系列目录前言AIGCAI写作AI绘画AI视频生成AI语音合成 前言 在此之…

持续集成/技术交付全流程流水线工具的设计与落地

文章目录 持续集成/技术交付全流程流水线工具的设计与落地概述工具架构设计主要功能模块代码库Jenkins 流水线代码构建自动化测试产品部署监控报警 使用方法步骤一:安装 Jenkins步骤二:创建 Jenkins 流水线步骤三:配置监控报警步骤四&#xf…

circleMidpoint(scrPt c, GLint r) 未定义的标识符,openGL第四章例子 ,画饼状图。

以下是完整的例子。在第四版 《计算机图形学 with openGL》第四章的例子中,竟然只调用了circleMidpoint(scrPt &c, GLint r) ,没有实现,我认为是系统方法,怎么找都找不到。openGL 官方文档也没找到,这不会是自定义…

生信教程|替代模型选择

摘要 由于教程时间比较久远,因此不建议实操,仅阅读以了解学习。 在运行基于可能性的系统发育分析之前,用户需要决定模型中应包含哪些自由参数:是否应该为所有替换假设单一速率(如序列进化的 Jukes-Cantor 模型&#xf…

新版DBeaver调整编辑窗口字体大小

网上有DBeave字体设置了,但看了下,目前最新版的已经更改了首选项分组,层级发生了变化,这里记录一下2022.08.21版的设置。 默认字体是10,比较小,改为11或更大会好看些。

强大的JTAG边界扫描(1):基本原理介绍

文章目录 1. 什么是边界扫描?2. JTAG硬件接口3. 边界扫描相关的软硬件4. 学习资料5. 总结 我是怎么了解到边界扫描的呢? 这就要从我淘到一块FPGA板卡的事情说起了。 前段时间我在某二手平台上淘了一块FPGA板子,它长这样: 板子的…

【虚拟机】

虚拟机 简介VMware Workstation简介下载安装许可证密钥 CentOS简介下载 创建新的虚拟机 简介 虚拟机(Virtual Machine,简称VM)是一种软件模拟的计算机,它在一台物理计算机上创建了一个独立的虚拟计算环境。这个虚拟环境可以运行操…

Spring-Cloud-Openfeign如何支持数据压缩?

HTTP压缩的原理 市面上主流的浏览器基本都支持gzip压缩,我们来看下服务端支持压缩的情况下,浏览器与服务端的通信过程: 第一步:浏览器发送Http request 给Web服务器, request头中有Accept-Encoding: gzip, deflate。(告诉服务器&#xff0…

学习Bootstrap 5的第九天

目录 列表组 基础的列表组 实例 活动的列表项 实例 禁用的列表项 实例 链接列表项 实例 移除列表边框 实例 带编号的列表组 实例 水平列表组 实例 多种颜色列表项 实例 多种颜色的链接列表项 实例 带徽章的列表组 实例 列表组案例 实例一 实例二 列表组…

港科夜闻|香港科技大学、香港教育大学与华东师范大学联盟,共同推动人工智能与教育未来发展...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科技大学、香港教育大学与华东师范大学联盟,共同推动人工智能与教育未来发展。三校共同签署合作备忘录,宣布成立「人工智能及教育未来联盟」。三校将各展所长,针对国家、大湾区及香…

以可视化方式解释 Go 并发 - 通道

在并发编程中,许多编程语言采用共享内存/状态模型。然而,Go 通过实现 通信顺序进程 (CSP) 区别于众多语言。在 CSP 中,一个程序由并行的进程组成,这些进程不共享状态,而是使用通道进行通信和同步它们的操作。因此&…

集创北方ICN6202 MIPIDSI转LVDS转换芯片

集创北方ICN6202 1.描述: ICN6201是一个接收MIPIDSI输入和发送LVDS输出的桥接芯片。MIPIDSI最多支持4个车道,每个车道的最大运行频率为1Gbps;总最大输入带宽为4Gbps;并且还支持MIPI定义的ULPS(超低功耗状态&#xff…

半导体与微电子洁净室检测重点-粒子计数器选择 北京中邦兴业

由于其产品的敏感性,用于微电子和半导体应用的洁净室设施需要严格的环境控制。这些洁净室还装有极其精密和昂贵的设备,例如光刻,蚀刻,清洁,掺杂和切割机。因此,清洁规范中的任何缺陷都可能影响整个生产过程…