我设置了mysql参数innodb_flush_log_at_trx_commit = 0。这意味着mysql每秒将事务刷新到HDD 1次。如果mysql因为这次刷新而失败(因为断电),我将丢失这些交易中的数据。或者mysql会在每次事务后将它们保存在数据文件(ibdata1)中而不管binlog flush?
感谢。
答案 0 :(得分:1)
Here是innodb_flush_log_at_trx_commit的MySQL参考手册中的条目。您可以在值设置为0的情况下丢失最后一秒的交易。
请注意,binlog实际上是与innodb无关的不同内容,用于所有存储引擎。 Here是关于MySQL参考手册中二进制日志的章节。
答案 1 :(得分:0)
二进制日志包含描述数据库更改(例如表创建操作或表数据更改)的“事件”。它还包含针对可能进行了更改的语句的事件(例如,不匹配任何行的DELETE),除非使用基于行的日志记录。二进制日志还包含有关每个语句花费该更新数据多长时间的信息。二进制日志有两个重要目的:
二进制日志不用于诸如SELECT或SHOW之类的不修改数据的语句。 https://dev.mysql.com/doc/refman/8.0/en/binary-log.html