图解"How MySQL Replication Works"
在使用MySQL的应用中,如果你的MySQL Server压力逐渐增大,在应用层优化已经到了一定瓶颈时,那么你应该首先考虑MySQL_Replication。本文将利用图示的方式简单的描述出MySQL Replication是如何工作的。
如何同步
- 主库将所有的更新操作,写入二进制日志。
- 从库运行"IO线程"(Slave IO Thread)读取主库的二进制日志。
- 从库运行"SQL线程"(Slave SQL Thread)执行IO线程(Slave IO Thread)读取的日志中的SQL,从而保持和主库的一致。
如何分配请求
- 目前,这部分需要在应用层实现。
- 执行更新SQL(UPDATE,INSERT,DELETE)时,请求主库。
- 执行查询SQL(SELECT)时,请求从库。
所以,当你的应用(Application)SELECT请求所占的比率越大,那么Relication就会越有效。
补充说明:
1.Slave的 I/O 线程读取的二进制日志时,会将其暂时存为“中继日志”(relay logs),等待SQL线程读取并执行。
2.Slave的I/O线程并不是直接读取Master的二进制日志文件,事实上,当I/O线程发起去请求时,Master会创建一个Binlog Dump线程将最新的二进制日志发送给Slave的IO线程。