您的位置:首页 > 数据库 > MySQL

mysql主从复制原理

2012-01-30 19:19 701 查看
参考文章:http://blog.itechol.com/space-33-do-blog-id-5064.html

mysql主从复制工作原理:

(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

(2) slave请求master的binary log events并写到中继日志(relay log)中;

(3) slave重做中继日志中新的事件

复制过程主要涉及到三个线程,两个线程(sql和IO线程)在slave服务器,另一个线程(IO)在master服务器。

(1)在每个事务更新数据完成之前,master在二进制日志中记录这些改变,在事件写入二进制日志完成后,master通知存储引擎提交事务。

(2)slave的IO线程连接上master,并请求指定二进制日志文件的指定位置后的日志内容。初始时通过下面的命令来设置slave端请求的master端的日志和位置

mysql>change master to master_host='192.168.1.106', master_user='replication', master_password='000000', master_log_file='binlog.000006', master_log_pos=107;

(3)master接收到来自slave IO线程的请求后,通过负责复制的IO线程(master)读取请求的二进制日志文件指定位置后的日志信息,并返回给slave端的IO线程。返回的信息中除了日志内容还包含本次返回的信息在master端的binary log文件的名称和读取的位置

(4)slave的IO线程接到信息后,将接收的日志内容写入slave端的relay log(mysql-relay-bin.xxxxx)文件的末端,并将读取到的master的binary log的文件名和位置记录到master-info文件中,以便在下次向maser请求时,能够清楚的告诉maser “我需要哪个binary log的哪个位置后的日志内容,并发给我”

(5)slave的SQL线程检测到relay log中有新的内容后,马上解析该日志中的内容为,可执行的query语句,并在slave端执行这些query。从而使得slave端和master端的数据保持一致性

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息