服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - MongoDB - MariaDB:真正的实时同步数据库,MySQL要小心了

MariaDB:真正的实时同步数据库,MySQL要小心了

2023-05-07 02:04未知服务器之家 MongoDB

一、背景介绍 无论是采用binlog或者GTID的方式,其本质都是通过I/O_thread和sql_thread的形式进行的同步,因为无法避免复制延迟而饱受诟病,基于上述MariaDB引入了Galera Cluster来解决此问题。 二、Galera Cluster介绍 Galera Cluster与传统的复制

MariaDB:真正的实时同步数据库,MySQL要小心了

 

一、背景介绍

无论是采用binlog或者GTID的方式,其本质都是通过I/O_thread和sql_thread的形式进行的同步,因为无法避免复制延迟而饱受诟病,基于上述MariaDB引入了Galera Cluster来解决此问题。

二、Galera Cluster介绍

Galera Cluster与传统的复制方式不同,不通过I/O_thread和sql_thread进行同步,而是在更底层通过wsrep实现文件系统级别的同步,可以做到几乎实时同步,而其上的MySQL对此一无所知

MariaDB:真正的实时同步数据库,MySQL要小心了

 

这就要求MySQL能够调用wsrep提供的API来完成,在Mariadb10.1之前的版本,支持Galera Cluster的版本是与Mariadb分开发行的,其版本名称就成为Mariadb-Galera,Mariadb10.1以后的版本中MariaDB Galera Cluste不再单独发行,而是以galera-25.3.12-2.el7.x86_64包的形式出现方面都强过MySQL。

MariaDB Galera Cluster主要功能

同步复制:真正的multi-master,即所有节点可以同时读写数据库自动的节点成员控制,失效节点自动被清除新节点加入数据自动复制真正的并行复制,行级用户可以直接连接集群,使用感受上与MySQL完全一致

MariaDB Galera Cluster的优缺点

1.优势:

  • 因为是多主,所以不存在Slavelag(延迟)
  • 不存在丢失事务的情况
  • 同时具有读和写的扩展能力
  • 更小的客户端延迟
  • 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

2.缺点:

  • 加入新节点时开销大,需要复制完整的数据
  • 不能有效地解决写扩展的问题,所有的写操作都发生在所有的节点
  • 有多少个节点,就有多少份重复的数据
  • 由于事务提交需要跨节点通信,即涉及分布式事务操作,因此写入会比主从复制慢很多,节点越多,写入越慢,死锁和回滚也会更加频繁
  • 对网络要求比较高,如果网络出现波动不稳定,则可能会造成两个节点失联,Galera Cluster集群会发生脑裂,服务将不可用

还有一些地方存在局限:

  1. 仅支持InnoDB/XtraDB存储引擎,任何写入其他引擎的表,包括mysql.*表都不会被复制。但是DDL语句可以复制,但是insert into mysql.user(MyISAM存储引擎)之类的插入数据不会被复制
  2. Delete操作不支持没有主键的表,因为没有主键的表在不同的节点上的顺序不同,如果执行select … limit …将出现不同的结果集
  3. LOCK/UNLOCK TABLES/FLUSH TABLES WITH READ LOCKS不支持单表所锁,以及锁函数GET_LOCK()、RELEASE_LOCK(),但FLUSH TABLES WITH READ LOCK支持全局表锁
  4. General Query Log日志不能保存在表中,如果开始查询日志,则只能保存到文件中
  5. 不能有大事务写入,不能操作wsrep_max_ws_rows=131072(行),且写入集不能超过wsrep_max_ws_size=1073741824(1GB),否则客户端直接报错
  6. 由于集群是乐观锁并发控制,因此,在commit阶段会有事务冲突发生。如果两个事务在集群中的不同节点上对同一行写入并提交,则失败的节点将回滚,客户端返回死锁报错
  7. XA分布式事务不支持Codership Galera Cluster,在提交时可能会回滚
  8. 整个集群的写入吞吐量取决于最弱的节点限制,集群要使用同一的配置

三、 MariaDB与Mysql的对比

1.MariaDB发展趋势和更新频率

毕竟基于MySQL创始人领衔开发的MariaDB数据库,肯定是知道MYSQL数据库存在的弱项,然后提供更好的兼容性和扩展性,我们基本上完全可以将MYSQL数据库建议到MariaDB数据库中,而且MariaDB发展速度和升级速度远远优先。

2.MySQL封闭且发展缓慢

由于MySQL在被收购之后更新速度与性能的优化非常的缓慢,而且是闭源的,完全没有Oracle之外的人参与进来,很多需要解决的问题都没有升级进去,反之很多公司虽然也有利用自己开发的分支Mysql版本。

3.MariaDB的特点和优势

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,MariaDB默认的存储引擎是Aria,不是MyISAM。Aria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。MariaDB是一个采用Maria存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。

4.MariaDB与MySQL对比

这个直观的区别在于MariaDB能够快速的查询和处理数据,且占用资源相对是少于MySQL数据库的,而且在运行速度、以及支持对 Unicode 的排序问题优于MYSQL数据库。

延伸 · 阅读

精彩推荐
  • MongoDBMongoDB 内存使用情况分析

    MongoDB 内存使用情况分析

    都说 MongoDB 是个内存大户,但是怎么知道它到底用了多少内存呢...

    MongoDB教程网10002020-09-29
  • MongoDBMongodb实现定时备份与恢复的方法教程

    Mongodb实现定时备份与恢复的方法教程

    这篇文章主要给大家介绍了Mongodb实现定时备份与恢复的方法教程,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面...

    chenjsh364522020-05-13
  • MongoDBMongoDB安装图文教程

    MongoDB安装图文教程

    这篇文章主要为大家详细介绍了MongoDB安装图文教程,分为两大部分为大家介绍下载MongoDB和安装MongoDB的方法,感兴趣的小伙伴们可以参考一下 ...

    Yangyi.He6132020-05-07
  • MongoDBMongoDB凭什么跻身数据库排行前五

    MongoDB凭什么跻身数据库排行前五

    MongoDB以比去年同期超出65.96分的成绩继续雄踞榜单前五,这个增幅在全榜仅次于PostgreSQL的77.99,而其相对于4月份的6.10分的增长也是仅次于微软SQL Server排名...

    孙浩峰3892020-05-22
  • MongoDBMongoDB中javascript脚本编程简介和入门实例

    MongoDB中javascript脚本编程简介和入门实例

    作为一个数据库,MongoDB有一个很大的优势——它使用js管理数据库,所以也能够使用js脚本进行复杂的管理——这种方法非常灵活 ...

    MongoDB教程网6982020-04-24
  • MongoDBmongodb基本命令实例小结

    mongodb基本命令实例小结

    这篇文章主要介绍了mongodb基本命令,结合实例形式总结分析了MongoDB数据库切换、查看、删除、查询等基本命令用法与操作注意事项,需要的朋友可以参考下...

    dawn-liu3652020-05-26
  • MongoDB迁移sqlserver数据到MongoDb的方法

    迁移sqlserver数据到MongoDb的方法

    这篇文章主要介绍了迁移sqlserver数据到MongoDb的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    听枫xl9682021-01-03
  • MongoDB分布式文档存储数据库之MongoDB分片集群的问题

    分布式文档存储数据库之MongoDB分片集群的问题

    这篇文章主要介绍了分布式文档存储数据库之MongoDB分片集群的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    Linux-18743072020-12-20