MariaDB 还是 MySQL?VPS 建站数据库选型与迁移对比(2026)
2026-08-15 · DevCraft Studio
MariaDB 和 MySQL 到底选哪个?两者同源却已分叉十余年:许可模式、线程池、JSON、存储引擎、系统版本表差异明显。本文用一张对照表讲清功能分歧,给出廉价 VPS 上的实测吞吐差异,并附 MySQL 无缝迁移 MariaDB 的五步法,专治「到底选哪个」的决策焦虑。
建站选数据库,十个人里有八个会卡在「MariaDB 还是 MySQL」这道选择题上。它们确实长得很像——MariaDB 就是 2009 年从 MySQL 5.1 分叉出来的社区版,SQL 语法、客户端工具、连接器基本互通,很多程序换个驱动就能跑。但分叉十多年后,两者已经是越来越不同的两个产品:许可模式一个双许可一个纯 GPL、线程池一个免费一个要企业版、JSON 一个原生二进制一个当文本存、存储引擎 MariaDB 多出一票。本文不站队,先把功能分歧用一张表讲清楚,再给廉价 VPS 上的实测吞吐差异,最后附上 MySQL 无缝迁移 MariaDB 的五步法。你看完就能照着自己项目的命门做决定。
延伸阅读
更多相关攻略推荐:【VPS 硬件选型指南 (CPU 篇) 04】AMD EPYC 还是、【对象存储 01】对象存储怎么选:Backblaze B2 vs C、【内存技术 01】DDR4 还是 DDR5?2026 年内存涨价背景、独服、裸金属、VPS 到底差在哪:什么时候该升级、【VPS 硬件选型指南 (CPU 篇) 02】AMD EPYC vs。
一、3 秒结论:到底选哪个
给你最省事的判断。如果你是新建项目、在意开源纯粹度、或者并发连接高想要免费线程池,选 MariaDB。如果你要的是最广泛的云厂商托管支持(RDS、Cloud SQL 原生只认 MySQL)、依赖 MySQL 企业版专属特性、或者团队只会 MySQL 那套,选 MySQL。绝大多数中小站长用两者都没差,迁移也只要十分钟;真正卡你的是下面这些功能分歧和许可条款。
- 选 MariaDB:看重开源、要高并发免费线程池、要用 Aria / ColumnStore / MyRocks 等额外引擎、需要系统版本表做审计。
- 选 MySQL:要用 AWS RDS / Google Cloud SQL 的原生托管、重度依赖原生 JSON 与 JSON_TABLE、要用 Group Replication 多主集群。
二、同源分叉:为什么会变成两个
2008 年 Sun 收购了 MySQL AB,2010 年 Oracle 又收购 Sun,MySQL 由此落到 Oracle 手里。社区担心 MySQL 的完全开源前景,MySQL 原作者 Michael "Monty" Widenius 带着团队在 2009 年 fork 出 MariaDB(从 MySQL 5.1 分出),目标就是保住一个真正社区驱动、永远开源的替代。早期 MariaDB 5.5 完全兼容 MySQL 5.5,到 10.2(2017)开始明显分叉。如今 MariaDB 11.4 是长期支持版(LTS,2024 年发布),更新系列已到 11.x;MySQL 这边是 8.4 LTS(2024 年发布)加 9.x 创新版双轨并行。两者都还在活跃迭代,但路线已经分道扬镳。
三、许可与开源:最大的分歧点
这是两者最根本的区别。MySQL 走双许可:社区版 GPLv2 免费,但企业版要商业授权,而且线程池、透明数据加密(TDE)、数据脱敏等进阶能力只在付费企业版里。MariaDB 服务端整体 GPLv2,部分企业组件用 BSL(Business Source License),但线程池、静态数据加密、角色权限、密码校验这类企业级安全特性在免费社区版里就全给了。换句话说,同样想要线程池和高并发能力,MySQL 要掏钱买企业版,MariaDB 白送。对预算紧、又不想碰授权雷区的个人站长,MariaDB 的许可更省心。
四、功能差异对照表
光说概念太空,直接上表。下表把建站最常用到的差异列出来,照着对号入座:
| 能力 | MySQL | MariaDB |
|---|---|---|
| 线程池(连接池) | 仅企业版 | 社区版内置,可扛 20 万+ 连接 |
| JSON 支持 | 原生二进制 JSON 类型,检索快 | 以 LONGTEXT 存并做 JSON 校验,无原生类型 |
| 存储引擎 | 主要是 InnoDB、MyISAM | 多 Aria、ColumnStore、MyRocks、Spider 等 |
| 系统版本表(时态表) | 不支持 | 10.3+ 内置,天然做审计/历史 |
| 序列(SEQUENCE) | 无,靠 AUTO_INCREMENT | 原生支持 |
| 不可见列 | 8.0.23+ 支持 | 支持 |
| Oracle / PL/SQL 兼容 | 不支持 | 10.3+ 有兼容模式 |
| 窗口函数 / CTE | 完整支持 | 完整支持 |
| 并行复制 | 基础实现 | 更灵活可配 |
| 高可用集群 | Group Replication / InnoDB Cluster | 内置 Galera Cluster |
几个要点展开说。线程池是 MariaDB 对高并发最实在的杀手锏:每个连接不再独占一个服务端线程,而是由线程池复用,500 以上并发时优势明显。JSON 这块是 MySQL 的强项——二进制 JSON 类型检索、索引、JSON_TABLE 都更强;MariaDB 把 JSON 当带校验的文本存,复杂 JSON 文档查询会慢一些,但普通用途够用。存储引擎上 MariaDB 的 Aria 是崩溃安全的 MyISAM 替代,ColumnStore 做实时分析,MyRocks 适合写重负载,Spider 支持分片,选择面比 MySQL 宽。
五、性能实测:廉价 VPS 上的吞吐差异
很多测评喜欢比谁快,但说实话在廉价 VPS 上两者差距没想象中大。低并发(100 连接以内)的普通 CRUD,两者几乎打平,InnoDB 表现一致。真正的分水岭在两点:一是高并发(500+ 连接),MariaDB 的线程池能带来约 12%-18% 的吞吐优势,MySQL 除非买企业版否则吃不到;二是特定负载,复杂子查询 / 多表 JOIN 上 MariaDB 优化器有时更快,分析型查询能快 15%-20%,读多场景的 Aria 引擎比 MyISAM 快 5%-10%,批量插入 MariaDB 快 8%-10%。
但要注意,廉价 VPS 的瓶颈往往是磁盘 IOPS 而不是数据库引擎本身——前面 PostgreSQL 那篇讲的突发盘陷阱在这里同样成立。所以与其纠结 MariaDB 还是 MySQL 快那几个百分点,不如先把机器磁盘测明白、内存给够。2 核 2G 起步能跑中小站点,上生产建议 4 核 4G 以上并把缓冲池调大。机型上 Contabo 大内存款、RackNerd 年付款、Vultr 高频 NVMe 都能稳妥承载两者,横向比价见 10 刀以下年付横评。
六、无缝迁移:MySQL 到 MariaDB 五步走
MySQL 迁 MariaDB 是公认最顺的单向迁移,因为 MariaDB 从设计上就是 MySQL 的 drop-in 替代。反过来 MariaDB 迁 MySQL 就麻烦,因为 MariaDB 专属特性(系统版本表、序列、Aria 引擎)MySQL 不认。下面五步是生产可用的逻辑迁移:
- 第一步,全量备份。用 mysqldump 导出,务必指定 utf8mb4、单事务、带例程触发器事件,避免锁表和字符乱码:
注意命令里的反斜杠是 shell 续行,实际粘贴时写一行即可。mysqldump -u root -p --default-character-set=utf8mb4 \ --single-transaction --routines --triggers --events \ --all-databases > full_backup.sql - 第二步,停库并安装 MariaDB。在同源系统上停掉 MySQL,用包管理器卸掉 MySQL 包,配置 MariaDB 官方仓库后装 mariadb-server。
- 第三步,导入数据。把备份传到新机,用同样的 utf8mb4 字符集导入,规避中文或特殊字符乱码:
mysql -u root -p --default-character-set=utf8mb4 < full_backup.sql - 第四步,升级系统表。导入后跑 mysql_upgrade 检查并修复 mysql 系统库(用户权限表、系统表结构),MariaDB 10.4+ 多能自动处理,但跑一遍更稳:
mysql_upgrade -u root -p - 第五步,改连接串与驱动。把应用连接串指向新端口,驱动可换成 MariaDB Connector;低峰期切换并监控慢查询与错误率。
迁移要避开几个坑:认证插件不同,MySQL 8 默认 caching_sha2_password,MariaDB 默认 ed25519 或 mysql_native,老驱动连不上就统一改成 mysql_native_password;GTID 格式两者不兼容,别直接主从混用;个别函数名和隐式排序行为不同,先在测试环境用 sql_mode 调一遍。只要不用到 MySQL 企业版专属特性,绝大多数站点十分钟迁完无感。
七、什么时候别迁移 / 何时回退
不是所有人都该动。下面几种情况建议守住现有选择:已经在用 AWS RDS / Google Cloud SQL 的 MySQL 托管,迁移要重搭且云厂商对 MariaDB 的支持细节不同;重度依赖 MySQL 原生 JSON、JSON_TABLE、Group Replication 多主;团队只会 MySQL 运维那套,迁移收益抵不过学习成本。反过来,如果你被 MySQL 企业版授权卡脖子、想要免费线程池和高并发、或者想用系统版本表做审计,从 MySQL 迁 MariaDB 几乎是零风险。一句话:新建项目按「开源 + 高并发」选 MariaDB,已有 MySQL 基础设施且跑得稳就别折腾。
八、怎么在 VPS 上自己压测选型
光看别人数字不放心,可以自己上 sysbench 在目标机器上跑一轮 OLTP 对比,用你自己的机器数字拍板。先装 sysbench,再用下面命令初始化一个 10 张表、每表 10 万行的测试库,然后跑 2 分钟读写混合负载:
sysbench oltp_read_write --db-driver=mysql --tables=10 --table-size=100000 --threads=16 --time=120 prepare
sysbench oltp_read_write --db-driver=mysql --tables=10 --table-size=100000 --threads=16 --time=120 run
driver 填 mysql 或 mariadb 都能连,关键看 transactions per second 和 95 分位延迟(latency percentile)。开跑前务必先把缓冲池调大:MySQL 设 innodb_buffer_pool_size 为物理内存的 60%-70%,MariaDB 同样调大其缓冲(InnoDB 同参数或 aria_pagecache_buffer_size),否则数据放不进内存,你测到的全是磁盘 IO 而非引擎差异,结论会完全失真。顺手把前面说的 4K 随机读写 IOPS 也一起量,因为廉价 VPS 上瓶颈常常根本不在引擎,而在云盘。压测环境尽量贴近生产:同样的字符集、同样的并发线程数、同样的数据量,这样比出来的数才对你有参考价值。
#MariaDB #MySQL #数据库选型 #VPS建站 #迁移 #开源数据库