MariaDB与MySQL官方版本的主要区别
文档起源
对比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语法,避免报错。
主要有:
create database
create function
create server
create user
create view
drop role
drop user
event的创建删除
index的创建删除
触发器的创建以及删除