mysql - mysql中的binlog是什么?

标签 mysql binlog

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

谢谢。

最佳答案

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

  • 对于复制,主复制服务器上的二进制日志提供要发送到辅助服务器的数据更改的记录。主服务器将其二进制日志中包含的事件发送到其辅助服务器,这些服务器执行这些事件以进行与主服务器相同的数据更改。
  • 某些数据恢复操作需要使用二进制日志。恢复备份后,将重新执行备份后记录的二进制日志中的事件。这些事件使数据库从备份点开始更新

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

    关于mysql - mysql中的binlog是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366184/

    相关文章:

    php - 图片下载而不是显示

    php - 就像 MySQL 和 PHP 中的逗号分隔列表一样

    mysql - 如何使用TRUNCATE语句避免MySql将其写入binlog?

    amazon-redshift - 在 mysql 到 redshift 复制期间缓慢插入和更新命令

    java - 如何使用apache camel从mysql表中读取数据并写入另一个表

    amazon-ec2 - 尝试将本地 mysql 服务器迁移到 AWS

    mysql - 如何在 MySQL 中存储数组?

    mysql - 如何理解mysql binlog中的时间戳?

    mysql - 如何使用 T-SQL 获取所有 MySQL binlog 事件信息