乐趣区

关于数据库:再见-MySQL-57

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

依据 DB-Engines 的数据显示,MySQL 是寰球最风行的开源数据库,并且在过来十多年中始终排名第二。数据起源:DB-Engines 官方网站截图,具体数据:https://db-engines.com/en/ranking

MySQL 的发展史

MySQL 的历史能够追溯到 1979 年,它的创始人叫作 Michael Widenius,他在开发一个报表工具的时候,设计了一套 API,起初他的客户要求他的 API 反对 sql 语句,他间接借助于 mSQL 的代码,将它集成到本人的存储引擎中。然而他总是感觉不称心,故萌发了要本人做一套数据库的想法。1996 年 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

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

因而,随着 MySQL 5.7 EOL 到来,咱们降级到一个更高的新版本,这样便于失去官网更好的更新反对,应该来说是一个最简略、最间接的计划。

然而,咱们是否有其余抉择呢?能够寻找一个更加完满的代替计划呢?我想,还是须要去理论的生产需要登程,对于数据库来说,平安是第一要务。不能因为迁徙导致数据安全事变,这就得失相当了。

MySQL 各个版本应用占比

想学习更多的 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 说再见了!!!!

退出移动版