前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql分支选择:Percona Or MariaDB

Mysql分支选择:Percona Or MariaDB

作者头像
田守枝
修改2019-07-10 16:05:57
7.8K0
修改2019-07-10 16:05:57
举报

1 简介

本文将对MySQL官方版本以及最流行的两个分支:MariaDBPercona Server进行对比介绍。笔者曾经遇到过一些同学,在可能在一个公司待了可能几年了,问他公司用的数据库是什么,他只能回答出,使用的是Mysql。当问到只是用的官方版本,或是哪一个分支时,他就一无所知了。本文将介绍这些分支产生的原因,以及在实际生产中,应该如何进行选择。并不会进行过多细节介绍,算是一个小科普。

我们从DB-Engines数据库排名开始说起。毫无疑问,MySQL 是最受欢迎的开源数据库之一,成千上万的网站依赖于 MySQL。截止笔者发此文时( 2019年3月31日),DB-Engines上最新的的数据库前20排名如下所示:

可以看到,官方Mysql的排名高居第2,MariaDB的排名是第15,Percona Server甚至没有出现在截图中(排名90)。从这个角度来说,无疑,对于大部分用户来说,官方Mysql应该都是一个很好的解决方案。

但是,大部分不代表所有。还是有一些公司需要有更合适自己的解决方案。在这个背景下,一些Mysql分支就出现了。原因如下:

一些分支认为 MySQL 变得太臃肿 了:认为Myswql提供了许多用户永远不会感兴趣的功能,牺牲了性能的简单性。如果人们对更精简的 MySQL 4 特别满意,那么为什么还要在 MySQL 5 中添加额外的复杂性呢?对于此分支来说,更好的 MySQL 分支应该更简单、更快捷,因此提供的功能也较少,但这样会使这些功能极其迅速地发挥作用,并且牢记目标受众。

此外,一些分支的最高目标是成为 MySQL 的替代产品:例如,Percona,MariaDB。它们认为MySQL 并没有提供足够多的新功能、添加新功能的速度太慢了或是认为 MySQL 没有跟上高可用性网站的目标市场的发展形势,这些网站运行于具有大量内存的多核处理器之上。因此目标是成为Mysql的替代产品, 因此这些分支通常都使用与 MySQL 相同的代码和界面,使过渡变得非常容易。

2 Percona

Percona是原MySQL运维部总监Peter和Vadim在2006年离开后创建的,因其本身是运维出身,所以他做的这个分支基本上也是为运维人员服务的。一些DB常用的工具XtraBackup和Percona Toolkit,都是出自此公司。

当然,Percona公司最主要的产品还是Mysql分支产品:Percona Server。Percona Server 声称可以"完全与 MySQL 兼容",这是与其他更改了大量基本核心 MySQL 代码的分支的最大区别。因此从理论上讲,从Mysql迁移到Percona Server,无需更改程序中的任何代码。

Percona公司在MySQL数据库优化方面做了非常多的工作,例如,Percona Server在官方InnoDB存储引擎的基础上开发了XtraDB存储引擎,可以认为XtraDB是InnoDB存储引擎的增强版。与MySQL5.1内置的InnoDB相比,单位时间执行事务数量是后者的2.7倍。XtraDB引擎能做到的向下兼容,创建数据表的时候,InnoDB引擎会自动被替换成XtraDB引擎,用户和客户端根本感觉不到区别。(注意这里只是说Mysql 5.1的情况,现在Mysql已经发展到8.0了,情况已经不同)。

完全兼容Mysql意味着,Percona Server需要跟着Mysql 官方版本一起演进。Percona Server采取的策略是:先兼容MySQL然后再进行优化,所以用户可以很容易的从MySQL迁移到Percona Server上面,而不用去考虑兼容性的问题。Percona Server会在每个官方版本的基础上,添加一些新的功能特性。https://www.percona.com/software/mysql-database/percona-server/feature-comparison列出了不同版本之间的差异。下图列出了mysql 5.7 版本上官方版本与Percona Server 5.7 的部分特性对比:

需要注意的是,Percona Server 虽然是开源的,但是他们自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。

3 MariaDB

MariaDB 的主要创建者是 Monty Widenius,也是 MySQL 的初始创建者。2008年Sun以10亿美金收购MySQL,结果Sun又把Microsystems和MySQL转手卖给Oracle,Monty愤而出走,创立MariaDB分支。从某种程度来说,可能MariaDB才是一脉相承过来的MySQL。(出走也许是因为担心 Oracle 是否会投入精力,来保持Mysql在数据库领域的领先地位)

与Percona Server不同,MariaDB是一个"开放"的分支,Monty为了避免它闭源特别成立了一个基金会( https://mariadb.org/),把MariaDB放在基金会里,基金会无法进行商业活动,也就不会步MySQL的后尘。当然,也有一个对应的MariaDB公司(https://mariadb.com/),提供内部QA稳定性测试、商业套件、订阅服务、培训、甚至定制化开发服务等,所以即使MariaDB这个公司被收购了,也不会影响到MariaDB本身的发展。

MariaDB基金会分为白金、金牌和铜牌三个级别的赞助会员,普遍来自于MariaDB项目的贡献者或用户。值得一提的是,在2017年的3月与6月,阿里云和腾讯云先后成为MariaDB的白金赞助商。下图列出了部分赞助商:

在早期,MariaDB 还声称自己是 MySQL 的替代,从 MySQL 切换到 MariaDB 时,无需更改任何基本代码。然而众多因素,导致MariaDB这个分支上也比官方MySQL走得更快一些,对内核进行了大量的修改。这里有众多因素:

  • MariaDB 自身"开放”的定位
  • 基金会的赞助商的推动(笔者自己YY)

虽说基金会不能进行商业活动,但是如阿里云/腾讯云,本身也是公有云的提供商,面对大量的中小企业客户需求,他们在数据库层面所有的功能改进或者bugfix,贡献给基金会的时候,更容易被采纳。

这意味着,实际上Maridb高版本已经不是100%兼容Mysql官方版本了。

另外值得一提是,MariaDB 早期版本也使用了来自 Percona 的 XtraDB 引擎。但是从MariaDB 10.2版本之后,又换回了Mysql官方的InnoDB。主要是原因,MariaDB认为在Mysql 5.5之前,XtraDB相对于InnoDB还有一些很大的优势,但是在Mysql 5.5之后,InnoDB已经做了很大的改进,二者已经没有那么大的性能差异;另外,维护XtrabDB意味着时刻需要跟随者官方版本的演进,给开发带来了很大的麻烦。(原文:https://mariadb.com/kb/en/library/why-does-mariadb-102-use-innodb-instead-of-xtradb)。

小提示:之前阅读过我异地多活场景下的数据同步之道这篇文章的同学,应该还有印象,数据库binlog同步解析组件需要解析mysql的binlog。由于MariaDB和官方Mysql已经不完全兼容,因此数据库同步组件通常在一些细节方面对MariaDB进行兼容。

4 如何选择

毫无疑问,官方MySQL 是一款非常出色的产品,是一个非常适合大多数使用情况的数据库。从前文的DB-Engines排名,可以看到官方的Mysql高居第2,MariaDB排名在15,Percona Server甚至没有出现在截图上(排名90)。

MariaDB排名如此之高,原因有很多:自身的功能特性,同时是Red Hat、SUSE等提供的LAMP架构安装包的默认数据库,还有一些赞助商是公有云厂商。

对于一些没有数据库内核研发能力的团队,还是建议使用Percona。Percona Server虽然排名是最靠后的,也许是大多数DBA最喜爱的,国内很多大型互联网公司都使用Percona Server。原因在于:MariaDB新特性很多,有很多新功能,其实有些我们不需要,还容易出bug。Percona Server分支更稳定,对DBA运维更加友好。那为什么Percona Server排名这么低呢?这可能与Percona Server的定位有关,其只支持Linux操作系统,作为生产数据库使用。而官方Mysql、MariaDB都支持多种操作系统,例如Windows、OS X、Solaris等,无疑扩大了受众。另外,对于官方Mysql、MariaDB都有公有云厂商将其以DBaaS的方式提供服务,但是,没有公有云厂商使用Percona Server。

最后,一个小问题。你知道你们公司使用的是Mysql官方版,亦或是MariaDB、Percona Server两个分支中的哪一个吗?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 田守枝的技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 简介
  • 2 Percona
  • 3 MariaDB
  • 4 如何选择
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档