组复制能够在两种模式下运行。
1.在单主模式下,组复制具备自动选主功能,每次只有一个 server成员接受更新。
2.在多主模式下,全部的 server 成员均可以同时接受更新.
组复制与异步主从复制区别.
1.传统mysql主从复制,是在主节点执行和提交事务,而后把他们异步的发送到从节点,行复制的从新执行主节点的SQL语句,这是一个 shared-nothing 的系统,默认状况下全部 server 成员都有一个完整的数据副本。
2.半同步复制,它在协议中添加了一个同步步骤。 这意味着主节点在提交时须要等待从节点确认它已经接收到事务。只有这样,主节点才能继续提交操做。
3.MySQL 组复制实现了基于复制协议的多主更新。
1)复制组由多个 server成员构成,而且组中的每一个 server 成员能够独立地执行事务。但全部读写(RW)事务只有在冲突检测成功后才会提交。只读(RO)事务不须要在冲突检测,能够当即提交。
2)换句话说,对于任何 RW 事务,提交操做并非由始发 server 单向决定的,而是由组来决定是否提交。准确地说,在始发 server 上,当事务准备好提交时,该 server 会广播写入值(已改变的行)和对应的写入集(已更新的行的惟一标识符)。而后会为该事务创建一个全局的顺序。最终,这意味着全部 server 成员以相同的顺序接收同一组事务。所以,全部 server 成员以相同的顺序应用相同的更改,以确保组内一致。
3)组复制使您可以根据在一组 server 中复制系统的状态来建立具备冗余的容错系统。所以,只要它不是所有或多数 server 发生故障,即便有一些 server 故障,系统仍然可用,最多只是性能和可伸缩性下降,但它仍然可用。server 故障是孤立而且独立的。它们由组成员服务来监控,组成员服务依赖于分布式故障检测系统,其可以在任何 server 自愿地或因为意外中止而离开组时发出信号。
4)他们是由一个分布式恢复程序来确保当有 server 加入组时,它们会自动更新组信息到最新。而且多主更新确保了即便在单个服务器故障的状况下也不会阻止更新,没必要进行 server故障转移。所以,MySQL 组复制保证数据库服务持续可用。
5)值得注意的一点是,尽管数据库服务可用,但当有一个 server 崩溃时,链接到