用户登录
用户注册

分享至

mariadb 多主复制

  • 作者: 美女请看我头像
  • 来源: 51数据库
  • 2020-10-03
有一定的局限性。 (1).目前的复制仅仅支持InnoDB存储引擎,任何写入其他引擎的表,包括mysql.*表将不会复制,但是DDL语句会被复制的,因此创建用户将会被复制,但是insert into mysql.user…将不会被复制的.
(2).DELETE操作不支持没有主键的表,没有主键的表在不同的节点顺序将不同,如果执行SELECT…LIMIT… 将出现不同的结果集.
(3).在多主环境下LOCK/UNLOCK TABLES不支持,以及锁函数GET_LOCK(), RELEASE_LOCK()…
(4).查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。
(5).允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。任何大型操作将被拒绝。如大型的LOAD DATA操作。
(6).由于集群是乐观的并发控制,事务commit可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。对 于集群级别的中止,集群返回死锁错误代码(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
(7).XA事务不支持,由于在提交上可能回滚。
(8).整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的节点应使用统一的硬件。
(9).集群节点建议最少3个。
(10).如果DDL语句有问题将破坏集群。



  要 mysql 迁移到 maria db
 在oracle收购了sun公司之后, mysql很不幸的落在了oracle的手中,mysql与oracle db存在竞争关系,很可能导致oracle公司影响mysql的开发与开放。mysql之父widenius在意识到oracle会对mysql做动作之前对mysql另开了一个branch:mariadb。作为一个能够完全兼容mysql的开源开放产品(向下兼容),受到了很多公司的青睐,red hat fedora ,opensuse ,维基百科,谷歌,淘宝等公司都先后把mysqldb迁移到maria db,从而更好的应对未来。
当然,未来还未来,如果mariadb的价值仅仅在未来,或许没有那么多公司愿意承担风险,进行数据库的迁移,特别是谷歌这样实力雄厚的科技公司,更不会担心技术不可控性。
  可见,哪怕是现在,maria比之mysql也有很多的优势:
性能提升

  2. 安全透明。(完全开源,开放,mariadb的商标属于maria基金会,以保障mariadb不会再次发生mysql这种事儿
  3. 支持更多存储引擎。(nosql backend :cassandra )
  4. mariadb galera cluster

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

因为是多主,所以不存在slavelag(延迟);
不存在丢失事务的情况;同时具有读和写的扩展能力;
更小的客户端延迟;
节点间数据是同步的,而master/slave模式是异步的,不同slave上的binlog可能是不同的。
  5. 与mysql完全兼容(至少是现在)。

  风险评估。这是最现实的问题,如果数据迁移风险过大,或者迁移之后发现maria db上各种不适,将会对产品造成极大的伤害。值得庆幸的是,从maria db的官方blog上,我们看到mysql可以无缝迁移到maria的文章,还有mysql 与maria混用的相关实例。集群方面,maria采用的 galera cluster同样适用于mysql,应该不会有接入的风险。
  当然,还有一个因素,就是尽早迁移会尽量降低复杂度,maria db与mysql未来肯定分道扬镳,兼容性会越来越差。
软件
前端设计
程序设计
Java相关