mysql有同步复制和异步复制。
同步复制使用了两阶段提交协议,基本原理如下:
1.Master提交事务,Slave接收到事务,开始准备提交事务;
2.Slave开始准备提交事务,然后发送Ok消息到Master,表示已经准备好提交事务(或者发送ABORT消息到Master表示,无法准备提交事务);
3.Master等待接收Slave的OK(或ABORT)消息:
a.如果接收到OK消息,则向Slave发送提交消息,告诉Slave可以开始提交事
b.如果接收到ABORT消息,这向所有Slave发送取消提交信息,告诉Slave 终止提交事务
4.每个Slave等待Master的消息:
a.如果接收到OK消息,就提交事务,并向Master发送事务已提交的确认信息
b.如果接收到ABORT消息,则终止提交事务并释放所有资源,并向Master发送事务已终止的确认
5.Mater接收到Slave的确认信息后,然后开始下一个事务的提交。
影响同步复制速度的主要因素并不是网络延迟(当构架在千兆以上的局域网中时,其影响很小),而是当一个事务提交后,会造成阻塞。只有等待一个事务完成后才能开始下一个事务的提交。
异步复制是一种单向的复制方式
1.Master将更新信息写到二进制日志文件中,并为这些文件建立索引以明了日志循环,该二进制文件作为更新记录发送给Slave;
2.Slave接收到更新的所有信息,然后阻塞并等待Maser通知其进行新的更新。