mysql中的binlog作用
- 记录mysql的数据更新或者潜在更新(比如根据某个id删除或更新操作)
- 主从复制就是通过binlog来实现的 (读写分离:分担读压力,一般都是一主多从)
流程
1.主数据库操作完后,会把操作(更新插入等)保存到binlog中
2.IO线程负责从Msater上读取信息并返回
(什么时候去读取:master会有一个事件通知,通知完只有IOThread会去读取并返回信息,将信息写到relaylog文件中)
3.SQL线程负责从relaylog中读取并写入到slave数据库中
(解码文件命令:
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001
因为里面的sql是加密了的
)
4.binlog存储格式:默认是statement
(1)statement:基于sql语句
(2)row:基于行模式。比如:update table_name set value=“XXX”,如果有1w条数据,那么binlog里面会记录1w条变更的数据的sql语句
(3)mixed:混合模式,上述两种
5.什么时候写入到binlog里面来: show variables like “%log%”;
一个事务提交以后写入,可以配置0、1之类的
看教学视频的收获,找个时间再补充完整~~