bin log
bin log的概念
server层的日志系统(归档日志),bin log中跟踪对其数据库的所有更改操作。是逻辑日志,以追加日志的形式记录。
binLog的三种格式
1)statement
记录SQL语句的原文。风险点:如果主/从用到的索引不同,操作语句带limit时,处理的可能是不同行的记录数据
2)row
仅记录某条记录的数据修改细节,不关系上下文。缺点:占用空间,同事写bin log很耗费I/O资源,影响执行速度
3)mixed
一般语句使用statement格式保存,如果使用了一些函数,statement格式无法完成主从复制的操作,采用row格式。MySQL自己会判断这条SQL语句是否可能引起主备不一致,如果有可能就用row格式,否则就用statement格式
主从同步的基础流程
(图例参考:极客时间-MySQL45讲)
1.主库接收到更新命令,执行更新操作,生成bin log
2.从库在主从之间建立长连接
3.主库dump_thread从本地读取binLog