mysql 集群方案

MySQL 复制

复制意味着数据从主(主)MySQL 服务器复制到一个或多个辅助(从)MySQL 服务器,而不是仅存储在一台服务器中。可以使用辅助服务器进行读取或管理任务

主从复制

MySQL 服务器异步复制,一个主服务器和一个或多个辅助服务器。

收到事务,主

  • 执行事务
  • 把修改的数据写入binary log
  • 主服务器上进行提交之前,binary log发送到辅助服务器的relay logs
  • 提交
  • 响应clinet

  • 重新执行(基于语句的复制)或应用(基于行的复制)事务
  • 把修改的数据写入binary log
  • 提交

半同步复制

主会等待从节点的确认

组复制 Group Replication

https://dev.mysql.com/doc/refman/5.7/en/group-replication.html

在 Group Replication 中,服务器通过消息传递保持强协调,以构建容错系统。

在一个组中,每个服务器都可以独立执行事务。

  • 任何读写 (RW) 事务只有在组成员批准时才会提交。
  • 只读 (RO) 事务没有限制,可以立即提交。
  • 服务器会执行事务,并将具有唯一标识符的行发送到其他服务器。
  • 所有服务器都接收到,就会应用这次修改

如果发生冲突(如果多个服务器上的并发事务更新同一行),认证过程会检测到它,并且该组遵循第一个提交获胜规则

MySQL 组复制协议