1)大多数数据库都是wal日志先行方案,因此只要日志落地了即使宕机数据也不会丢。
2)大多数数据库些日志是先写缓存,定时或者定次刷到磁盘上,因此这个时候宕机还没有刷到磁盘上的数据就丢了(当然磁盘自己也有缓存).
3)mysql有参数控制刷日志的频率和方案,但是研究下来都会丢数据
innodb_flush_log_at_trx_commit=1是每次写操作都刷磁盘。但是mysql应该是先给客户端返回成功了,应该没有等待刷磁盘完成才返回给客户端。所以任然有丢失一次数据的风险。(应该不会对值为1做单独的逻辑处理吧,0,1,2处理逻辑应该是一样的,既然0和2不等,为什么1要等?)
这个参数配置看业务要求