master库写redo、binlog不实时丢数据的场景
redo的ib_logfile与binlog日志如果被设置非实时flush,就有可能存在丢数据的情况:
- redo未写入磁盘,但binlog写入磁盘,造成从库数据量比主库多。
- redo写入了磁盘,但是binlog未写入,造成从库数据量比主库少。
从目前来看,只能牺牲性能去换取数据的安全性,必须要设置redo和binlog为实时刷盘,如果对性能要求很高,则考虑使用SSD:
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
slave库写redo、binlog不实时丢数据的场景
slave读取master的binlog日志后,需要落地3个文件:relay log
、relay log info
、master info
:
relay log:即读取过来的master的binlog,内容与格式与master的binlog一致。
relay log info&#x