MariaDB与MySQL官方版本的主要区别

504 查看

文档起源

对比percona来说,mariadb更“不像”一点MySQL,官方发布的10.1版本,对比的比较实现是官方版本的5.6以及5.7,这里主要想说的,是10.1这个版本与官方版本5.7的主要区别。

主要特点

Galera

Galera是一个mysql经典的多主share nothing的实现。目前对官方版本的支持比较有限,所以实际上用的时候,目前多推荐使用MariaDB,Mariadb也为Galera做了一些内部的修正,来更好地为Galera服务。包括information_schema的一些变更,以及相关部署参数的支持。

目前阶段,官方的Group Replication尚未GA,公开市场上目前只有这一个多主的架构实现,如果业务上有非常强的数据一致性,以及数据库可用性(业务连续性)的要求的话,官方版本是做不到这一点的。

文件透明加密

官方版本的TDE,透明加密,目前只能做到对数据文件的透明加密,对redo日志,以及binlog日志,目前还是明文存储数据的。

Mariadb可以对redo,binlog等文件都进行透明加密,最大限度上避免数据文件被窃后的损失。

这个加密带来的问题是,对于传统的基于redo的备份软件,备份执行不再有效,对于传统的,依赖binlog解析的工具来说,日志也是无法处理的。

这点上,只能依赖Mariadb的工具链。

当然,传统的slow log,general log,error log等是无法被加密的。

另外需要注意的一点是,目前支持基于文件秘钥的加密,在企业安全相关标准上,有要求加密必须基于整体的加密系统,这点上,官方企业版本,支持OKV的加密体系,相对会更好一点。

复制

一个主要的变动是,row格式的binlog从库执行的时候,可以触动触发器,这点与官方版本区别非常大。

还有一个是过滤器方面,mariadb可以基于gtid的dumain id执行或者跳过。对于多级复杂的拓扑,作用还是挺大的。

角色

基于角色的权限管理,官方版本到8版本才支持,到GA估计还需要一两年,如果对这方面有强烈需求的话,不妨考虑一下Mariadb。

OR REPLACE语法

Mariadb对于创建删除对象,可以支持使用if exists,if not exists,or replace语法,避免报错。

主要有:

  1. create database

  2. create function

  3. create server

  4. create user

  5. create view

  6. drop role

  7. drop user

  8. event的创建删除

  9. index的创建删除

  10. 触发器的创建以及删除