摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。

3.2 Multi-Master Replication

多主复制意味着您可以写入任何节点并确保写入对所有节点都是一致的在集群中。
这与常规MySQL复制不同,在常规MySQL复制中,您必须将写入应用于master以确保它将被同步。

对于多主复制,任何写入都在所有节点上提交或根本不提交。
下图显示了它如何适用于两个节点,但是相同的逻辑适用于集群中的任意数量的节点:

Figure 3.1: Image source: Galera documentation - HOW CERTIFICATION-BASED REPLICATION WORKS

所有查询都在节点上本地执行,并且仅在COMMIT上有特殊处理。
当COMMIT查询发出时,事务必须通过所有节点上的认证。
如果它没有通过,你会收到ERROR作为响应。之后,事务在本地节点上应用。

COMMIT的响应时间包括以下内容:
•网络往返时间
•认证时间
•本地申请

注意:在远程节点上应用事务不会影响COMMIT的响应时间,因为它发生在背景后的认证反应。

这种架构有两个重要的后果:
•可以并行使用几个应用程序。这实现了真正的并行复制。
使用 wsrep_slave_threads 变量配置的线程从机可以有多个并行。

•slave可能有一个小的时间段不同步。这是因为master可以申请事件比slave更快。
如果你从slave读取,您可以读取尚未更改的数据。你可以从图中看到。

但是, 可以通过设置 wsrep_causal_reads = ON 变量来更改此行为。
在这种情况下,在slave上读取将等待,直到事件被应用(这将明显增加读取的响应时间)。
Slave和Master之间的差距是这种复制被称为这个复制被称为虚拟同步的原因,而不是真正的同步复制。

所描述的COMMIT行为也有另一个严重的暗示。如果你运行写事务到两个不同的节点,
集群将使用乐观锁模型。这意味着事务在个别查询期间不会检查可能的锁定的冲突,
而是在COMMIT阶段,您可能会在COMMIT上收到ERROR响应。

这是因为它是与您可能会遇到的常规InnoDB不兼容之一。
在InnoDB,DEADLOCK和LOCK TIMEOUT错误通常发生在特定查询,而不是COMMIT。
优良做法是在COMMIT后检查错误代码,但仍有许多应用程序不能做那个。

如果计划在多个节点上使用多主复制并运行写事务,你可能需要确保您处理COMMIT查询的响应。

3.2 Multi-Master Replication的更多相关文章

  1. Oracle Created Database Users: Password, Usage and Files References (文档 ID 160861.1)

    This document is no longer actively maintained, for info on specific (new) users in recent product e ...

  2. 多服务器之间Session共享

    原理:多个服务器间想共享session,就相当于共享取多台主机上的一个变量,所以共享的思路就是让大家都能读取变量,实现的方法可以通过将session保存到专门的一个服务器上,所有服务器都去请求数据,也 ...

  3. Multi-source Replication

    MariaDB starting with 10.0.1 Multi-source replication means that one server has many masters from wh ...

  4. MySQL Master High Available 源码篇

    https://m.aliyun.com/yunqi/users/1287368569594542/articles https://yq.aliyun.com/articles/59233 MySQ ...

  5. 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……

    两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connect ...

  6. 关于Redis中的Replication

    一.简介 Redis的replication机制允许slave从master那里通过网络传输拷贝到完整的数据备份.具有以下特点: 异步复制 可以配置一主多从 可以配置从服务器可以级联从服务器,既 M- ...

  7. [置顶] 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……

    两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connect ...

  8. Redis Persistent Replication Sentinel Cluster的一些理解

    Redis Persistent Replication Sentinel Cluster的一些理解 我喜欢把工作中接触到的各种数据库叫做存储系统,笼统地说:Redis.Mysql.Kafka.Ela ...

  9. 深入剖析 redis 主从复制

    主从概述 redis 支持 master-slave(主从)模式,redis server 可以设置为另一个 redis server 的主机(从机),从机定期从主机拿数据.特殊的,一个 从机同样可以 ...

  10. MYSQL 5.7 新增150多个新功能

    http://www.thecompletelistoffeatures.com/ There are over 150 new features in MySQL 5.7. The MySQL ma ...

随机推荐

  1. tomcat 403 forbidden

    server.xml和tomcat-users.xml都是设置于过了,还是403,最后发现context.xml中多了一行 <Valve className="org.apache.c ...

  2. JavaScript RegExp.test() 方法

    定义和用法: test() 方法用于检测一个字符串是否匹配某个模式. 语法: RegExpObject.test(string); RegExpObject:正则表达式; string:必须参数,要检 ...

  3. Zookeeper客户端cli_st为何在crontab中运行不正常?

    实践中,发现直接在命令行终端运行cli_st时,能够得到预期的结果,但一将它放到crontab中,则只收到: bye 相关的一段clit_st源代码如下: if (FD_ISSET(, &rf ...

  4. 项目中使用WCF替换asmx Web service总结

    以前项目解决方案中,用http协议的asmx Web service作服务器数据访问入口,在SoapHeader中写入用户名和加盐密码进行身份认证. http asmx服务是明文传输,传输过程中数据很 ...

  5. AppleScript: Handler

    AppleScript绝对是个奇葩的存在!不管功能有多强大. Handler有两种,一种是和OC类似的使用Label参数,一种是和javascript类似的使用括号把一堆参数都放在里面的. label ...

  6. CentOS 6.0下phpvod搭建教程(LAMP+phpvod)

    之所以安装CentOS是因为之前试过RedHat,但是发现RedHat在安装时,无法获取安装源,原因是RedHat系统没有在RHN注册. 网上的很多教程都说可以直接换用CentOS的源,可我小搞里一会 ...

  7. 转:css实现强制不换行/自动换行/强制换行

    css实现强制不换行/自动换行/强制换行 [日期:2007-08-22] 来源:  作者: [字体:大 中 小] 强制不换行 div{ white-space:nowrap;} 自动换行 div{  ...

  8. linux下文件打包、压缩详解

    Linux平台下,有如下几种常见的压缩工具: ========================================================================= 工 具 ...

  9. spark on yarn模式下配置spark-sql访问hive元数据

    spark on yarn模式下配置spark-sql访问hive元数据 目的:在spark on yarn模式下,执行spark-sql访问hive的元数据.并对比一下spark-sql 和hive ...

  10. mono+jexus 部署之CompilationException

    使用 HelpPage 组件 CompilationException 好不容易在ubuntu上搭建了mono+jexus,欣喜若狂的部署上发布的网站,急忙打开,成功运行. 但是别高兴的太早,当我打开 ...