参考"高性能MySQL一书"主库意外关闭:如果没有设置sync_binlog选项,就可能在数据库崩溃前没将最后的部分二进制事件刷新至磁盘,备库IO系线程可能一直处于读不到未写入磁盘的状态.当主库重新启动,备库重新连接到主库,被再次去读取这些事件,主库会告诉备库没有这个二进制日志偏移量.解决方法:从下一个日志的开头读取日志,但是一些日志事件将丢失,主从恢复正常后使用pt-table-checksum来检测数据的一致性,以便修复.修复可以使用工具pt-table-sync或者mysqldump建议事项:sync_binlog=1innodb_flush_log_at_trx_commit=1innodb_flush_log_at_trx_commit = 0,Innodb 中的Log Thread 每隔1 秒钟会将log buffer中的数据写入到文件,同时还会通知文件系统进行文件同步的flush 操作,保证数据确实已经写入到磁盘上面的物理文件.但是,每次事务的结束(commit 或者是rollback)并不会触发Log Thread 将log buffer 中的数据写入文件.所以,当设置为0 的时候,当MySQL Crash 和OS Crash 或者主机断电之后,最极端的情况是丢失1 秒时间的数据变更.innodb_flush_log_at_trx_commit = 1,这也是Inn
...
继续阅读
(72)