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重做中继日志中的事件,将改变它自己的数据(数据重演)