MariaDB Galera Cluster 之二 MariaDB Galera Cluster主要功能优缺点和对比
Posted Hadoop技术学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MariaDB Galera Cluster 之二 MariaDB Galera Cluster主要功能优缺点和对比相关的知识,希望对你有一定的参考价值。
MariaDB虽然被视为mysql数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。谢谢张树杰同学为我们准备的这系列MariaDB。希望大家能够喜欢!
上一期:
一、 MariaDB Galera Cluster主要功能
同步复制
真正的multi-master,即所有节点可以同时读写数据库
自动的节点成员控制,失效节点自动被清除
新节点加入数据自动复制
真正的并行复制,行级
用户可以直接连接集群,使用感受上与MySQL完全一致
二、 MariaDB Galera Cluster的优缺点
因为是多主,所以不存在Slavelag(延迟)
不存在丢失事务的情况
同时具有读和写的扩展能力
更小的客户端延迟
节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的
加入新节点时开销大,需要复制完整的数据
不能有效地解决写扩展的问题,所有的写操作都发生在所有的节点
有多少个节点,就有多少份重复的数据
由于事务提交需要跨节点通信,即涉及分布式事务操作,因此写入会比主从复制慢很多,节点越多,写入越慢,死锁和回滚也会更加频繁
对网络要求比较高,如果网络出现波动不稳定,则可能会造成两个节点失联,Galera Cluster集群会发生脑裂,服务将不可用
还有一些地方存在局限:
仅支持InnoDB/XtraDB存储引擎,任何写入其他引擎的表,包括mysql.*表都不会被复制。但是DDL语句可以复制,但是insert into mysql.user(MyISAM存储引擎)之类的插入数据不会被复制
Delete操作不支持没有主键的表,因为没有主键的表在不同的节点上的顺序不同,如果执行select … limit …将出现不同的结果集
LOCK/UNLOCK TABLES/FLUSH TABLES WITH READ LOCKS不支持单表所锁,以及锁函数GET_LOCK()、RELEASE_LOCK(),但FLUSH TABLES WITH READ LOCK支持全局表锁
General Query Log日志不能保存在表中,如果开始查询日志,则只能保存到文件中
不能有大事务写入,不能操作wsrep_max_ws_rows=131072(行),且写入集不能超过wsrep_max_ws_size=1073741824(1GB),否则客户端直接报错
由于集群是乐观锁并发控制,因此,在commit阶段会有事务冲突发生。如果两个事务在集群中的不同节点上对同一行写入并提交,则失败的节点将回滚,客户端返回死锁报错
XA分布式事务不支持Codership Galera Cluster,在提交时可能会回滚
整个集群的写入吞吐量取决于最弱的节点限制,集群要使用同一的配置
三、 MariaDB与Mysql的对比
毕竟基于MySQL创始人领衔开发的MariaDB数据库,肯定是知道MYSQL数据库存在的弱项,然后提供更好的兼容性和扩展性,我们基本上完全可以将MYSQL数据库建议到MariaDB数据库中,而且MariaDB发展速度和升级速度远远优先。
由于MySQL在被收购之后更新速度与性能的优化非常的缓慢,而且是闭源的,完全没有Oracle之外的人参与进来,很多需要解决的问题都没有升级进去,反之很多公司虽然也有利用自己开发的分支Mysql版本。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,MariaDB默认的存储引擎是Aria,不是MyISAM。Aria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。MariaDB是一个采用Maria存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。
这个直观的区别在于MariaDB能够快速的查询和处理数据,且占用资源相对是少于MySQL数据库的,而且在运行速度、以及支持对 Unicode 的排序问题优于MYSQL数据库。
加入技术讨论群
欢迎大家通过二维码打赏支持技术社区(二维码累计打赏50+,打赏英雄请留名,社区感谢您):
以上是关于MariaDB Galera Cluster 之二 MariaDB Galera Cluster主要功能优缺点和对比的主要内容,如果未能解决你的问题,请参考以下文章
MariaDB Galera Cluster(mariadb10.1.22)部署