/etc/my.cnf中sync_binlog参数设置累积多少个事务数后落盘
说明:
1. 数据存到数据库和binlog落盘是同时进行的
2. 数据是先存在内存中,达到设置的事务数后才落盘的
3. 从库读的是主库的内存中的数据,并非落盘的数据
4. 写入数据时,只要主库存活,就写入到主库
过程状态记录:
前提:50个事务一落盘
1. 未断电前:主库内存中正在从50进行到60,从库读取主库内存中到58并存入从库
2. 断电:主库中50-60的数据存在于内存中,binlog无法落盘,数据没有保存到数据库文件。开始写数据到从库中,数据进行到61,之后数据逐渐写入从库
3. 主库重启:主库上的50-60的binlog丢失,数据丢失,数据开始写入主库,binlog记录从50开始。从库从主库内存中读数据,读到50时,从库发现自己已经接收过50的数据,就不再接收,就不进行同步了。此时状态为:只写数据到主库,从库不同步。
4. 最终结果:从库中的数据为1-58,61-…,缺少的是58-60的,主库中的数据是1-49,…-…,
完整过程描述:
50个事务后落盘,主库正在写数据,此时断电,内存中写到60,从库从主库内存中读到58,从库读取到58后产生数据到从库上,主库由于未到50个事务,不会存盘。导致50-60之间的事务,未能生成binlog日志到盘上,同时数据也未写入到数据库文件上,导致58-60的数据既不在主库上也不在从库上,丢失。主库重启后,由于盘上记录的数据是到49,因而从50开始记录,此时从库再从主库上读的时候发现自己已经有50了,这样就产生冲突,就无法继续读取主库的数据了。
现象:同步损坏,主库重启后,再写数据,只到主库
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。