如题
一夕伊人醉 0 在 MySQL 中,binlog 和 redo log 的作用是不同的。 redo log:是 MySQL 引擎层面上的日志,用于确保在数据库崩溃时可以恢复到最近的一个提交点。它记录了在内存中对数据进行修改的操作,然后异步刷写到磁盘中。 binlog:是 MySQL 服务器层面上的日志,用于记录对数据库进行的所有更改操作。它记录的是完整的 SQL 语句。 因此,这两种日志的一致性是由 MySQL 引擎层面上的 redo log 来保证的。 在 MySQL 中,当执行一个事务时,事务中的 SQL 语句会被先写入 redo log,然后再写入 binlog。这是因为如果在写入 binlog 之前数据库发生崩溃,redo log 可以用于回滚事务,从而保证数据的一致性。只有在 redo log 已经成功写入磁盘后,才会将 SQL 语句写入 binlog。 因此,binlog 和 redo log 之间的一致性是由 MySQL 引擎层面上的事务提交机制保证的。在执行一个事务时,MySQL 会先将修改操作写入 redo log,并刷写到磁盘中,然后才会将完整的 SQL 语句写入 binlog,确保数据的一致性。如果在写入 binlog 之前数据库发生崩溃,redo log 可以用于回滚事务,保证数据的一致性。2年前
回答1
只看作者最新最热