01、什么是binlog
binlog是mysql的一种二进制日志文件,用来记录数据的变化。mysql使用binlog进行主从复制,如图:
-
客户端向master的mysql sever写入数据
-
当数据发生变化时,master将变更的数据记录写入到二进制文件中,即binlog。
-
slave订阅了master的binlog,所以会通过一个I/O THREAD与master的DUMP THREAD进行通信,同步binlog
-
I/O THREAD读取到binlog后会吸入到relay log中,准备重放。
-
slave会通过SQL THREAD读取relay log,重放数据的改动并执行相应的改动。
这里有几点需要注意:
-
主从复制不是强一致性,只能保证最终一致
-
master配合binlog复制会影响性能,所以尽量不要在master上挂太多的slave,如果对时间要求不高,可以在slave上挂slav