『 纸上得来终觉浅,绝知此事要躬行 』


开始使用Mariadb

2019.11.09

大多数的数据库管理系统都是商业的,但作为一个重度的Linux使用者来说,开源的DBMS还是更有吸引力。之前一直使用的是MySQL,但自从被Oracle收购,就很让人揪心。好在子分支的MariaDB能够兼容MySQL的命令和操作,加上开源社区的支持力度,让我决定加入MariaDB的阵容。

1 两者异同

迁移前总得先了解一下两者的异同,从网上搜集了一下资料,主要以下几点

1.1 使用情况

自1995年以来,MySQL一直被视为最广泛使用的开源数据库,而MariaDB在最近几年才渐渐得到几个主要巨头比如Google和Linux社区的赏识,我也是被ArchLinux wiki推介从而了解到这个DBMS。

1.2 索引结构

MariaDB完全兼容MySQL的数据、表格定义、结构和API,也就是说完全可以平滑的从MySQL过渡到MariaDB

1.3 二进制实现

MariaDB除C、和C++外,还使用Bash和Perl

1.4 复制与集群

MariaDBMySQL为主终端用户提供与主从主复制和主从复制相同的复制和集群功能。但MariaDB还使用10.1版以后的Galera Cluster

1.5 支持

MySQL由Oracle的开发人员和工程师支持,MariaDB由开源社区提供技术支持。

1.6 安全性

就安全性而言,MySQL为表空间数据提供了强大的加密机制。它提供了强大的安全参数,包括选择好的密码,不给用户不必要的特权,并通过防止SQL注入和数据损坏来确保应用程序安全。MariaDB在内部安全和密码检查,验证模块(PAM)和轻量级目录访问协议(LDAP)认证,Kerberos,用户角色以及对表空间,表格和日志的强大加密等安全功能方面取得了重大进展。

1.7 可扩展性

MySQL不支持,MariaDB建立在现代架构的基础之上,可以在每一层 – 客户端,集群,内核和存储上进行扩展。这种可扩展性提供了两个主要优势。它允许通过插件实现持续的社区创新,这意味着可以通过MariaDB的可扩展架构集成各种存储引擎,如MariaDB ColumnStoreFacebookMyRocks。此外,它使客户能够轻松配置MariaDB以支持从联机事务处理(OLTP)到联机分析处理(OLAP)的各种用例。

1.8 JSON支持

MySQL支持本地JSON数据类型,可以在JSON(JavaScript Object Notation)文档中高效地访问数据。MariaDB Server 10.2引入了一整套用于读写JSON文档的24个函数。另外,JSON_VALID函数可以与校验约束一起使用,而像JSON_VALUE这样的函数可以与动态列一起使用来索引特定的字段。

1.9 授权许可

MySQLGPL下以开放源代码提供代码,并以MySQL Enterprise形式提供非GPL商业分发选项。MariaDB只能使用GPL,因为它的工作源于该许可条款下的MySQL源代码。

1.10 性能

MariaDB通过MySQL的许多创新实现了同类最佳性能。其中包括线程池管理以最大限度地提高处理效率,以及InnoDB数据存储区内的碎片整理等广泛的优化功能。因此,当从InnoDB表中删除行时,可用空间立即可供操作系统使用。不需要将旧表中的数据复制到新表中,并且表空间中没有空闲。MariaDB还提供与引擎无关的表统计信息,以改善优化程序的性能,加快对表的大小和结构进行查询处理和数据分析。

2 优缺点

2.1 优点

  • MariaDB针对性能进行了优化,对于大型数据集,它比MySQL强大得多。从其他数据库系统可以优雅的迁移到MariaDB是另一个好处。
  • MySQL切换到MariaDB相对容易,这对于系统管理员来说好像是一块蛋糕。
  • MariaDB通过引入微秒级精度和扩展用户统计数据提供更好的监控。
  • MariaDB增强了KILL命令,使您可以杀死用户的所有查询(KILL USER 用户名)或杀死查询ID(KILL QUERY ID query_id)。MariaDB也转而使用Perl兼容的正则表达式(PCRE),它提供比标准MySQL正则表达式支持更强大和更精确的查询。
  • MariaDB为与磁盘访问,连接操作,子查询,派生表和视图,执行控制甚至解释语句相关的查询应用了许多查询优化。
  • MariaDB纯粹是开源的,而不是MySQL使用的双重授权模式。一些仅适用于MySQL Enterprise客户的插件在MariaDB中具有等效的开源实现。
  • MySQL相比,MariaDB支持更多的引擎(SphinxSE,Aria,FederatedX,TokuDB,Spider,ScaleDB等)。
  • MariaDB提供了一个用于商业用途的集群数据库,它也支持多主复制。任何人都可以自由使用它,并且不需要依赖MySQL Enterprise系统。

2.2 缺点

  • 从版本5.5.36开始,MariaDB无法迁移回MySQL
  • 对于MariaDB的新版本,相应的库(用于Debian)不会及时部署,由于依赖关系,这将导致必需升级到较新的版本。
  • MariaDB的群集版本不是很稳定。

3 开始使用

$ sudo pacman -S mariadb
$ sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql # init dir
$ sudo systemctl start mariadb # or mysqld
$ mysql-secure_installation # install instruction

参考