摘要: 出处:黑洞中的奇点 的博客 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. a=a++问题引发的思考

    使用javap命令解析出来的a=a++过程的字节码(int a=1; a=a++): 0: iconst_1  将数值1压入栈顶 1: istore_1  栈顶值1存入局部变量表的第一个slot中 2 ...

  2. tomcat限制ip访问

    context元素添加 <Context> <Valve className="org.apache.catalina.valves.RemoteAddrValve&quo ...

  3. [转].NET 4.5+项目迁移.NET Core的问题记录 HTTP Error 502.5

    本文转自:http://www.cnblogs.com/ronli/p/5900001.html 这几天试着把目前的开发框架迁移到新的.net core平台,中间遇到的问题在这里简单记录一下. 迁移过 ...

  4. 博客搬家到blog.wu8685.com

    博客园算是我最开始来的地方了吧,当时还在学校,为了找工作会看一些理论方面的东西,所以写的都是偏理论的心得. 后来参加了工作,开始忙起来,也就没有时间来更新了.其实忙都是借口,这点还是需要反思的. 大概 ...

  5. dnn ubuntu 问题

    http://blog.csdn.net/moshuilangting/article/details/53926622 http://blog.csdn.net/enjoyyl/article/de ...

  6. Mac下Laravel的Homestead环境配置

    准备开始学PHP后端,在看完PHP语法以及PHP的MVC设计模式以后,准备开始学习PHP的主流框架Laravel,Laravel准备了一个万事俱备的虚拟环境Homestead,配置一下用起来. 安装v ...

  7. ie高版本浏览器不支持velocity的问题解决

    <head><meta http-equiv="X-UA-Compatible" content="IE=5"></head> ...

  8. struts2下velocity做视图如何访问request,session等内置对象,如:原来webwork的$req

    struts2下velocity做视图如何访问request,session等内置对象(转) velocity 内置对象 struts2 requestStruts2环境下用velocity做视图时访 ...

  9. 深入浅出谈数据挖掘zz

    编者的话:本文对数据挖掘概念的产生,数据挖掘与常规数据分析的主要区别,所能解决的几大类问题和所应用的领域都有着非常清晰的论述.作者在此篇文章中认为数据挖掘最重要的要素是分析人员的相关业务知识和思维模式 ...

  10. CSS —— line-height详解

    本文导读:“行高“指一行文子的高度,具体来说是指两行文子间基线间的距离.在CSS,line-height被用来控制行与行之间的垂直距离.line-height 属性会影响行框的布局.在应用到一个块级元 ...