三都网站建设,wordpress 设置icon,wordpress4性能,景德镇市建设厅网站binlog
MySQL的binlog#xff08;二进制日志 或 归档日志#xff09;是一种记录数据库的更改操作的日志。它包含了对数据库进行的插入、更新和删除操作的详细信息。binlog是以二进制格式存储#xff0c;可以用于恢复数据库、数据复制和数据同步等操作。具体来说#xff0c…binlog
MySQL的binlog二进制日志 或 归档日志是一种记录数据库的更改操作的日志。它包含了对数据库进行的插入、更新和删除操作的详细信息。binlog是以二进制格式存储可以用于恢复数据库、数据复制和数据同步等操作。具体来说binlog记录了每个更改操作的SQL语句或数据修改内容也被称为归档日志。
binlog 用于记录数据库执行的写入性操作(不包括查询)信息以二进制的形式保存在磁盘中。binlog 是 mysql的逻辑日志并且由 Server 层进行记录使用任何存储引擎的 mysql 数据库都会记录 binlog 日志。binlog 是通过追加的方式进行写入的可以通过max_binlog_size 参数设置每个 binlog文件的大小当文件大小达到给定值之后会生成新的文件来保存日志。
逻辑日志可以简单理解为记录的就是sql语句 。物理日志mysql 数据最终是保存在数据页中的物理日志记录的就是数据页变更
binlog使用场景
在实际应用中 binlog 的主要使用场景有两个分别是 主从复制 和 数据恢复 。
主从复制 在 Master 端开启 binlog 然后将 binlog发送到各个 Slave 端 Slave 端重放 binlog 从而达到主从数据一致。数据恢复 通过使用 mysqlbinlog 工具来恢复数据。
redolog
Redo log重做日志是InnoDB存储引擎特有的日志文件用于在崩溃恢复时对未提交事务进行恢复。它记录了每次数据修改操作的物理日志包括InnoDB的数据页修改、索引页修改、插入缓冲insert buffer等。Redo log的作用是确保事务在提交后持久化到磁盘上。
为什么需要redo log
我们都知道事务的四大特性里面有一个是 持久性 具体来说就是只要事务提交成功那么对数据库做的修改就被永久保存下来了不可能因为任何原因再回到原来的状态 。
那么 mysql是如何保证一致性的呢最简单的做法是在每次事务提交的时候将该事务涉及修改的数据页全部刷新到磁盘中。但是这么做会有严重的性能问题主要体现在两个方面
因为 Innodb 是以 页 为单位进行磁盘交互的而一个事务很可能只修改一个数据页里面的几个字节这个时候将完整的数据页刷到磁盘的话太浪费资源了一个事务可能涉及修改多个数据页并且这些数据页在物理上并不连续使用随机IO写入性能太差
因此 mysql 设计了 redo log 具体来说就是只记录事务对数据页做了哪些修改这样就能完美地解决性能问题了(相对而言文件更小并且是顺序IO)。
Undo log
Undo log撤销日志是InnoDB存储引擎特有的日志文件用于在事务回滚或并发控制等操作时恢复数据的一致性。Undo log记录了事务执行过程中每个数据修改的反向操作可以用于撤销未提交事务或回滚已提交事务并且在MVCC多版本并发控制中起到了重要作用。
数据库事务四大特性中有一个是 原子性 具体来说就是 原子性是指对数据库的一系列操作要么全部成功要么全部失败不可能出现部分成功的情况。实际上 原子性 底层就是通过 undo log 实现的。undo log主要记录了数据的逻辑变化比如一条 INSERT 语句对应一条DELETE 的 undo log 对于每个 UPDATE 语句对应一条相反的 UPDATE 的 undo log 这样在发生错误时就能回滚到事务之前的数据状态。同时 undo log 也是 MVCC(多版本并发控制)实现的关键。