MariaDB
数据库管理系统是
MySQL的一个分支,主要由
开源社区在维护,采用
GPL授权许可 MariaDB的目的是完全兼容MySQL,包括
API和
命令行,使之能轻松成为MySQL的代替品。在
存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人
Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司
MySQL AB卖给了
SUN,此后,随着SUN被
甲骨文收购,MySQL的所有权也落入
Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
版本
MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。
从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和
自行开发的新功能。
发展
成立于2009年,
MySQL之父Michael “Monty” Widenius用他的新项目MariaDB完成了对MySQL的“反戈一击”。开发这个分支的原因之一是:
甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及
Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。
MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的:
3、所有文件名、二进制、路径、端口等都是一致的
4、所有的MySQL连接器,比如
PHP、Perl、
Python、
Java、
.NET、MyODBC、
Ruby以及MySQL C connector等在MariaDB中都保持不变
5、mysql-client包在MariaDB服务器中也能够正常运行
6、共享的客户端库与MySQL也是二进制兼容的
也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行。
起源
为何改了个名字呢,这其中是有些典故的。
MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/
Oracle来发展MySQL,实在很
不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。
MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。
在Oracle控制下的MySQL开发,有两个主要问题:1. MySQL核心开发团队是封闭的,完全没有Oracle之外的成员参加。很多高手即使有心做贡献,也没办法做到。2. MySQL新版本的发布速度,在Oracle收购Sun之后大为减缓。Widenius有一个
ppt,用数据比较了收购之前和之后新版本的发布速度。有很多bugfix和新的
feature,都没有及时加入到发布版本之中。
以上这两个问题,导致了各个大公司,都开发了自己定制的MySQL版本,包括Yahoo!/
Facebook/
Google/
阿里巴巴+
淘宝网等等。
MySQL是
开源社区的资产,任何个人/组织都无权据为己有。为了依靠广大MySQL社区的力量来更快速的发展MySQL,另外开分支是必须的。
MariaDB默认的
存储引擎是Maria,不是MyISAM。Maria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。可以通过以下语句,转换为支持事务的Maria引擎。ALTER TABLE `tablename` ENGINE=MARIA TRANSACTIONAL=1;
特点
MariaDB 是一个采用 Maria 存储引擎的
MySQL分支版本,是由原来 MySQL 的作者
Michael Widenius创办的公司所开发的免费开源的
数据库服务器。
这个项目的很多代码都改编于 MySQL 6.0,例如 “pool of threads”功能提供解决多
数据连接问题。MariaDB 5.1.41 RC可以到这里下载,32位和64位已编译
Linux版本,还包括
源代码包。MariaDB基于
GPL 2.0发布。
与 MySQL 相比较,MariaDB 更强的地方在于:
PBXT 存储引擎
更少的警告和bug
更多的 Extensions (More index parts, new startup options etc)
更好的功能测试
慢查询日志的扩展统计
支持对 Unicode 的排序
相对于MySQL最新的版本5.6来说,在性能、功能、管理、
NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、
子查询优化、组提交、进度报告等。详情见列表。
目标
目标是提供一个由社区开发的、稳定的、总是免费的
MySQL分支,在用户级别上兼容主流版本。我们为自己的版本和上游、社区版的
互操作性提高而努力。
MariaDB分支与最新的MySQL发布版本的分支保持一致性, 例如MariaDB 5.1.47对应MySQL 5.1.47,等等。
第三方工具
MariaDB的
API和协议兼容
MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。这意味着,所有使用MySQL的连接器、库和
应用程序也将会在MariaDB下工作。在此基础上,由于担心
甲骨文MySQL的一个更加封闭的软件项目,
Fedora的计划在Fedora 19中的以MariaDB取代
MySQL,
维基媒体基金会的服务器同样也使用MariaDB取代了MySQL。
如下是支持MariaDB的客户端工具:
DBEdit 一个免费的MariaDB数据库和其他数据库
管理应用程序。
Navicat 一系列Windows、
Mac OS X、
Linux下专有数据库管理应用程序。Navicat 15 for MySOL是目前业界流行的 MySQL 和 MariaDB 数据库的前端编辑工具,是视图可视化的利器,可轻松生成关于表之间的
关系运算 SOL 命令。该软件通过对
数据表的可视化连接操作,自动生成复杂的多表关系运算的 SOL 命令,并实时返回结果
记录集。
HeidiSQL 一个Windows上自由和
开放源码的MySQL客户端。它支持MariaDB的5.2.7版本和以后的版本。
phpMyAdmin 一个基于网络的
MySQL数据库管理应用程序
兼容性
出于实用的目的,MariaDB是同一MySQL版本的二进制替代品(例如MySQL 5.1->MariaDB 5.1, MariaDB5.2和MariaDB 5.3是兼容的。MySQL 5.5将会和MariaDB 5.5保持兼容)。这意味着:
mysql-client包还可以与MariaDB服务器一起工作。
这意味着对于大多数情况下,您可以卸载
MySQL和安装MariaDB,可以工作很好。(不需要转换成任何
数据文件,如果使用同一主版本,比如5.1)。
我们每月会与MySQL
代码库合并来确保我们的
兼容性和得到任何
Oracle修正的
bug和所有特性。
我们在脚本升级方面也做了大量的工作,从MySQL 5.0升级到MariaDB 5.1比从MySQL 5.0到MySQL 5.1更容易。
这就是说:MariaDB有许多的新选项、扩展,
存储引擎和bug修复,而MySQL是没有的。您可以在MariaDB分发版本差异页面找到不同版本的功能特性集。可在MariaDB versus MySQL – Features看到。
MariaDB 5.1与MySQL 5.1的不兼容性
为了让MariaDB比MySQL提供更多更好的信息,极少情况下MariaDB会出现不兼容情况。
如果使用MariaDB 5.1替代MySQL5.1,您将看到如下列举的全部已知用户级不兼容情况:
如果正在使用MariaDB的新命令选项,新特性或新存储引擎,那么就不能在MySQL和MariaDB之间轻易来回切换了。
MariaDB 5.2与MySQL 5.1的不兼容性
同MariaDB 5.1和MySQL 5.1的一样,再补充一条:
实际上,MariaDB 5.2是MariaDB 5.1和MySQL 5.1替代品。
MariaDB 5.3与MySQL 5.1和MariaDB 5.2的不兼容性
IGNORE指令并不会忽略所有错误(比如致命错误),只是会忽略可以安全忽略的那些。
MariaDB 5.5与MariaDB 5.3的不兼容性
XtraDB
XtraDB提供者Percona,在5.5代码库并未提供XtraDB所有早些时候的
功能特性。正因为如此,MariaDB 5.5也不能提供它们所有功能特性。
在5.5版本中XtraDB缺少的选项
以下选项XtraDB 5.5是不支持的。如果在my.cnf文件中使用到这些选项,请删除后再升级到5.5。