复制是MySQL的一项功能,使服务器能够将更改从一个实例恢复到另一个实例
主服务器(master)将所有数据和结构更改记录到二进制日志中。二进制日志格式是基于语句的、基于行的和混合的。
从属服务器(slave)从主服务器请求二进制日志并在本地应用其内容,他记录所有接收和应用的时间状态,以便在服务器重启或网络故障后可以从停止的位置恢复。
主/从属服务器关系是一对多关系:
每个从属服务器从一个主服务器读取日志。
一个主服务器可以将日志传送给许多从属服务器。
中继从属服务器
:1一个中级从属服务器可以用作另一个从属服务器的主服务器
2 更改会传播到更多的从属服务器。
复杂拓扑:
可以使用更复杂的拓扑:
1,双向拓扑具有两个主服务器并且是另一个主服务器的从属服务器
2,循环拓扑具有任意数量的服务器。
--每个服务器是一个主服务器并且是另一个主服务器的从属服务器。
--对任何主服务器的更改将复制到所有主服务器。
--并非每个从属服务器都必须是主服务器
3,多源复制只允许一个从属服务器接受来自多个主服务器的事务
复制冲突:
在包含多个主服务器的所有拓扑中都可能发生冲突。
如果两个客户几乎同时写入两个主服务器上的同一行,则会无法预测从属服务器上该行的最终值。
最终值取决于中继从属服务器上的事件顺序。
在分层复制中,该行在从属服务器上的最终值有分层结构确定:
在循环复制中,如果发生冲突,行的最终值在各服务器之间不一致。