mysql主从复制的实现详见

###1.mysql复制原理
将mysql某一台主机上的数据复制到其他从机上,并重新执行一遍日志文件中的内容来实现复制。
1.主服务器将更新写入二进制日志文件,并维护文件的一个索引来监控循环日志,这些日志记录可以发送到从服务器进行更新。
2.当一个从服务器连接主服务器时,它通知主服务器从日志文件中读取最后一次成功更新的位置;从服务器接收从那时起产生的任何更新,然后封锁并等待主服务器通知新的更新。 ###2.mysql支持的复制类型 1基于语句的复制。即在主服务器上执行的sql语句,在从服务器上执行同样的语句。
2基于行的复制。把改变的内容复制过去。 3混合类型的复制。默认采用基于语句的复制,一旦发现基于语句的复制无法精确复制时,则采取行复制。 ###3.复制的具体工作
1 mster将改变的数据记录到二进制日志中,这些记录叫做二进制数据
2 slave将master的二进制记录拷贝到它的中继日志中
3 slave重做中继日志中的事件,这样可以保持了主从同步
###4.工作流程
####master做的事情
1 有数据变化时,master记录二进制文件。
2 在事件写入二进制日志完成后,master通知存储引擎提交事务
####slave做的事情
1.它需要将master中的二进制记录拷贝到自己的中继日志。
2.slave开启一个工作线程--I/O线程。该线程在master上打开一个普通的连接,然后开始binlog dump process,该process从master的二进制日志中读取事件,如果连接上master,它会睡眠并等待mater产生新的事物。即I/O线程将master中的事务写入到中继日志中。
3.slave线程将从 中继日志中读取事件,并重现事件(执行相关的sql)进而来更新slave的数据,这样就实现了主从同步。
###5.总结
简单概述主从复制过程
1.mster将数据改变 记录到二进制日志中,即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)
2.slave将master的 二进制日志文件 拷贝到 它的中继日志(relay log)
3.slave重做中继日志中的事件,将改变它自己的数据(数据重演)