MySQL主从复制
首先说明一下,binlog记录的方式主要是两种(排除Mixed)
statement--SBR 基于操作的SQL语句
优点:并不需要记录每一条SQL语句和每一行数据的变化,减少了binlog日志量,,节约了I/O,提高了性能。
缺点:在某些情况下导致主备数据不一致。
row---RBR 基于行的变更情况(变化前后的数据记录)
优点:不记录每条SQL语句的上下文信息,只记录数据的详细修改细节,最为安全。
缺点:会产生大量日志,消耗磁盘空间。
MySQL的主从复制过程,可以参考下面的文章,此处省略。
主从延迟
t1时刻,主库执行完事务,并写入binlog
t2时刻,从库接收主库的binlog(IO线程),并写入中继日志
t3时刻,从库的SQL线程执行SQL语句,完成事务
主从延迟,就是从库执行完成到主库执行完成中间的时间差大于(t3-t1)