什么是mysql中的binlog?

时间:2009-09-02 06:58:16

标签: mysql binlog

我设置了mysql参数innodb_flush_log_at_trx_commit = 0。这意味着mysql每秒将事务刷新到HDD 1次。如果mysql因为这次刷新而失败(因为断电),我将丢失这些交易中的数据。或者mysql会在每次事务后将它们保存在数据文件(ibdata1)中而不管binlog flush?

感谢。

2 个答案:

答案 0 :(得分:1)

Here是innodb_flush_log_at_trx_commit的MySQL参考手册中的条目。您可以在值设置为0的情况下丢失最后一秒的交易。

请注意,binlog实际上是与innodb无关的不同内容,用于所有存储引擎。 Here是关于MySQL参考手册中二进制日志的章节。

答案 1 :(得分:0)

二进制日志包含描述数据库更改(例如表创建操作或表数据更改)的“事件”。它还包含针对可能进行了更改的语句的事件(例如,不匹配任何行的DELETE),除非使用基于行的日志记录。二进制日志还包含有关每个语句花费该更新数据多长时间的信息。二进制日志有两个重要目的:

  1. 对于复制,主复制服务器上的二进制日志提供了要发送到从属服务器的数据更改的记录。主服务器将其二进制日志中包含的事件发送到其从属服务器,从属服务器执行这些事件以对主服务器进行相同的数据更改。
  2. 某些数据恢复操作需要使用二进制日志。还原备份后,将重新执行在执行备份后记录的二进制日志中的事件。这些事件使数据库从备份开始就保持最新状态

二进制日志不用于诸如SELECT或SHOW之类的不修改数据的语句。 https://dev.mysql.com/doc/refman/8.0/en/binary-log.html