2026年,为什么说该从MySQL转向MariaDB了

更新日期: 2026-03-19 阅读: 24 标签: mysql

如果你还在用MySQL,而且在意开源这回事,那2026年是个值得认真考虑转向MariaDB的年份。

这不是什么"谁更好"的口水仗,而是过去一年发生的事,让MySQL的未来变得有点看不清了。


开源仓库三个月没动静,这事挺少见

2025年9月之后,GitHub上的mysql/mysql-server仓库就再没新提交了。一直停到2026年1月,三个月多,一个字都没动 

对开源项目来说,这不太正常。

放在一起看更明显:MySQL的提交量这些年一直在掉,2025年直接掉到了项目启动以来的最低点 。时间点也巧,正好是2025年9月Oracle那轮裁员——MySQL核心团队裁了约70人,很多是跟了社区版多年的老工程师 

MySQL之父Monty Widenius听到消息时说"有点心碎"。他当年创建MariaDB,本就是想给MySQL留条真正开源的后路 


Oracle从来没被当成靠谱的开源管家

这事得从2009年说起。Oracle收购Sun微系统,把MySQL一起收了。当时欧盟差点否决这笔交易,就是怕Oracle想干掉MySQL这个竞争对手。最后Oracle做了十项承诺,保证会继续维护MySQL,交易才放行 

后来的事,很多人看在眼里。

公开的bug跟踪系统,Oracle内部根本不用。外面的人想贡献代码,提交个Pull Request,也就收到个"已收到",然后就没下文了。这些改动可能会出现在下一个版本里,也可能不会,就算用了也常被重写,Git提交者栏里只有Oracle员工的名字,真正的作者最多在博客文章里被提一句 

曾在AWS管过RDS MySQL和RDS MariaDB团队的Otto Kekäläinen说,他手下的开发者都不愿给MySQL提交代码,就因为Oracle对外部贡献的态度太差。而MariaDB那边,所有开发都在GitHub上实时进行,谁都能提Pull Request、能拿到评审,bug讨论也公开,这才是真正的开源该有的样子 

MySQL只是在许可证层面是开源的(GPL v2),项目运作层面,早就不是了 


技术上也出了不少问题

MySQL 8.0.29发布时,把默认的ALTER TABLE方法改成了更激进的in-place执行,但当时这个实现不成熟,很多边界情况没覆盖到,导致不少用户数据库崩溃、数据损坏。这个问题拖了一年,到8.0.32才彻底修好 

还有更让人担心的。MySQL 8.0是2018年发布的,之后六年没出过真正的重大版本。2023年出了个8.1,只是个短期预览版。2024年的8.4 LTS,名义上是新主版本,但几乎没什么新功能,让很多人失望 

性能也在往下走。MySQL性能专家Mark Callaghan的基准测试显示,在写密集型负载下,MySQL 9.5的吞吐量比8.0还低15%左右 

安全方面,2025年MySQL发布了123个CVE(通用漏洞披露),而MariaDB只有8个。而且MySQL的CVE大多没什么实际细节,比如最新的CVE-2025-53067只描述说"高权限攻击者可通过多协议网络访问,轻易攻破MySQL服务器",完全没有可供验证的信息,用户只能信Oracle的话 

最近还有个严重bug:MySQL 8.0从库如果开了super_read_only,同时innodb_undo_log_truncate是默认ON,自动undo截断时可能卡住,留下残留文件,如果这时候实例崩溃重启,可能引发静默数据损坏。Oracle只在8.4里修了这个问题,没打算backport到8.0——而8.0再过一个月(2026年4月)就EOL(停止支持)了 


Oracle想把用户往收费产品赶

去MySQL官网看看就知道了。首页写得大大的都是MySQL企业版、HeatWave云数据库,想找社区版?得拉到下载页面最底下才看得见 

MySQL的软件本身、文档、官网,每个地方都在引导用户放弃开源版本,转向闭源的MySQL产品,尤其是HeatWave——这不只是闭源服务,还意味着Oracle完全掌控你数据库里的内容 

2026年3月,一个由数据库公司组成的联盟(包括Percona、VillageSQL)和544名MySQL用户联名请求Oracle把MySQL社区版的控制权交给独立非营利基金会。Oracle直接拒绝了 

分析师说得很直接:放弃治理权就是放弃路线图决定权,可能会加速开发与Oracle数据库、HeatWave竞争的功能,这不符合Oracle的商业利益 

Oracle倒是承诺会更透明、更包容,还说要加一些以前只有商业版才有的功能,比如配置文件引导优化、超图优化器、JSON双重性增强,甚至可能加向量函数 。但信不信,看个人了。


替代方案其实很简单

MariaDB是MySQL最直接的平替。它是MySQL作者Monty Widenius在2009年搞的分支,基本向后兼容,大多数应用可以直接切过去,不用改代码 

实际迁移也成熟了。全球57%的WordPress网站已经在用MariaDB,MySQL只占42% 。华为云DRS服务支持MySQL到MariaDB的实时同步,从5.6、5.7、8.0都可以迁到对应的MariaDB版本 。RDK Wiki上还有从MySQL 5.6升级到MariaDB 10.11的详细步骤,备份、卸载、安装、升级,一步步写得很清楚 

不过需要注意,现代MariaDB和MySQL已经有了不少差异。JSON数据类型、用户认证、系统表结构、权限模型都不完全一样 。迁移前最好先用MariaDB的迁移评估工具扫一遍,测好了再动手 。建议建一套新的MariaDB基础设施,通过复制或导出导入把数据迁过去,而不是在原位升级 

如果不想用MySQL系,PostgreSQL是另一个热门选择。它在Stack Overflow 2025年调查里已经大幅领先MySQL,成为专业开发者最常用的数据库 。DB-Engines排名上,PostgreSQL从2014年起一路猛涨,MySQL则在明显下滑 。不过从MySQL迁到PostgreSQL工作量会大很多,毕竟语法和功能都不一样。


说到底,图什么

有人觉得,只要MySQL现在能用,是不是真正开源、未来怎么样都无所谓。但数据库是整个软件栈里最核心的部分,一出问题就是大问题,尤其是安全漏洞。抱着"能用就行"的心态,最后可能把自己坑了 

真正的开源项目里,问题被公开讨论,越严重参与修复的人和企业越多。像科学方法一样,思想自由流动、被质疑、被验证,最后胜出的是证据最充分的方案 

Oracle在处理安全问题上的方式,正好相反。信息封锁,CVE公开后也几乎不提供细节,用户只能信Oracle说"修好了" 

无论最后选MariaDB、Percona Server、TiDB还是PostgreSQL,只要不是Oracle的产品,体验可能都会好不少。

MySQL从巅峰坠落,看着确实有点伤感。但Monty把自己的三个孩子My、Maria、Max的名字都刻在了数据库产品上——MySQL、MariaDB、MaxDB。至少,还有一个在真正开源的路上走着。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/13454

相关推荐

node如何和MySQL进行通信

Node.js与MySQL交互操作有很多库,常用最多的是mysql模块,mysql数注意:安装前先把目录cd到node.exe所在目录下,这样执行安装命令时,这篇文章主要介绍:链接mysql的流程、数据库连接参数说明、MYSQL CURD操作、连接池Pooling connections、断线重连、防止SQL注入

MySQL有哪些索引类型?

从数据结构角度B+树索引(O(log(n)));hash索引;FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了);R-Tree索引(用于对GIS数据类型创建SPATIAL索引)

mysql图形化管理工_ mysql可视化工具哪个好?

MySQL是一个非常流行的小型关系型数据库管理系统。目前MySQL被广泛地应用在Internet上的 中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据 库

MySQL技术内幕:InnoDB存储引擎

本文绝大部分内容来源《MySQL技术内幕:InnoDB存储引擎》一书。InnoDB存储引擎是多线程模型,其后台有多个不同的后台线程,负责处理不同的任务。

MYSQL中视图的使用

什么是视图?执行一条SQL,将结果集保存在一张虚拟表中。在视图创建后,可以用与表基本相同的方式使用(查询、过滤、排序数据、与其他视图或连结、(添加、更新))视图只是用来查看存储在别处的数据的设施,本身不包含数据,返回的数据也是从其他表检索出来的。

一个案例彻底弄懂如何正确使用 mysql inndb 联合索引

有一个业务是查询最新审核的5条数据,查看当时的监控情况 cpu 使用率是超过了100%,show processlist看到很多类似的查询都是处于create sort index的状态。索引有一个audit_time在左边的联合索引,没有关于status的索引。

MySQL 常用30种SQL查询语句优化方法

MySQL查询语句优化方法:应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

MySQL为字段添加默认时间

在数据表中,要记录每条数据是什么时候创建的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录创建时间;实现方式:将字段类型设为 TIMESTAMP

一条sql语句在mysql中是如何执行的

最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的。

mysql innodb索引原理

innodb存储引擎表是索引组织表,表中数据按照主键顺序存放。其聚集索引就是按照每张表的主键顺序构造一颗B+树,其叶子结点中存放的就是整张表的行记录数据,这些叶子节点成为数据页。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!