MySQL日志———Binlog日志

在 MySQL 中,binlog(Binary Log,二进制日志) 是一个非常重要的日志文件,主要用于记录数据库执行的 写操作 (比如 INSERTUPDATEDELETE 等)以及一些数据结构的变化操作(如 CREATE TABLEALTER TABLE 等)。它不会记录 读操作 (如 SELECT)。简单来说,binlog 就是用来追踪和记录数据库的变更历史。


binlog 的主要功能

1. 数据恢复

  • 作用:在数据库出现故障时,可以通过 binlog 恢复数据。

  • 机制

    • 首先,从备份中恢复到最近的状态(如通过 mysqldump 或其他方式创建的全量备份)。
    • 然后使用 binlog 重放最近的变更操作,将数据库恢复到崩溃前的最新状态。
  • 比喻:binlog 就像快递的追踪记录,告诉你这段时间所有包裹是怎么运送的。即使中途快递丢失了,你可以根据追踪记录找到问题点并重发包裹。


2. 主从复制(Replication)

  • 作用:binlog 是实现 MySQL 主从复制的核心工具。

  • 机制

    • 在主库中,binlog 会记录所有的写操作。
    • 从库会通过读取主库的 binlog,重放日志中的操作,保持主从数据一致。
  • 比喻:主库是老师在黑板上写的笔记(binlog),从库就是学生抄笔记,确保和老师的内容完全一致。


3. 审计操作

  • 作用:通过解析 binlog,可以追踪是谁在什么时候对哪些数据做了什么操作。
  • 比喻:binlog 就像一份操作日志,记录了你过去的一切"修改"操作,是数据操作的历史档案。

4. 增量备份

  • 作用:binlog 支持增量备份功能。

  • 机制

    • 全量备份用于保存某个时间点的完整数据。
    • binlog 用于记录之后的数据变更,从而实现增量备份。
  • 比喻:全量备份就像存一份文件的副本,而 binlog 就像这份文件的修改历史。通过全量备份 + binlog,就能完全恢复文件的所有版本。


binlog 的日志格式

MySQL 支持三种 binlog 格式:

  1. STATEMENT(基于语句的日志)

    • 记录执行的 SQL 语句。
    • 优点:日志体积小。
    • 缺点 :某些情况下无法精确重放,比如使用 NOW() 或非确定性函数时。
  2. ROW(基于行的日志)

    • 记录每一行数据的具体变化。
    • 优点:精确记录了每行数据的变化,无需担心语句无法重现。
    • 缺点:日志体积较大。
  3. MIXED(混合模式日志)

    • 结合了 STATEMENT 和 ROW 的优点。
    • MySQL 会根据操作场景自动选择适合的格式。

binlog 和其他日志的区别

日志类型 功能 记录内容 是否持久化
binlog 数据恢复、主从复制 数据的写操作和结构变化
redo log 崩溃恢复 事务提交前后的数据变化
undo log 事务回滚 数据修改前的原始值
error log 记录 MySQL 的错误和警告信息 错误信息
slow log 慢查询分析 执行时间过长的查询 否(可配置)

总结

binlog 的作用:

  1. 支持主从复制,确保多台服务器之间的数据一致性。
  2. 支持数据恢复,帮助从故障中还原数据。
  3. 支持增量备份,提高备份效率。
  4. 提供审计功能,记录数据库的所有修改历史。

简单来说,binlog 是 MySQL 的"黑匣子",记录了所有重要的数据变更操作,确保数据安全与一致性。

相关推荐
东软吴彦祖36 分钟前
包安装利用 LNMP 实现 phpMyAdmin 的负载均衡并利用Redis实现会话保持nginx
linux·redis·mysql·nginx·缓存·负载均衡
慵懒的猫mi1 小时前
deepin分享-Linux & Windows 双系统时间不一致解决方案
linux·运维·windows·mysql·deepin
码农丁丁4 小时前
为什么数据库不应该使用外键
数据库·mysql·oracle·数据库设计·外键
随心Coding6 小时前
【MySQL】存储引擎有哪些?区别是什么?
数据库·mysql
羊小猪~~10 小时前
MYSQL学习笔记(四):多表关系、多表查询(交叉连接、内连接、外连接、自连接)、七种JSONS、集合
数据库·笔记·后端·sql·学习·mysql·考研
苹果醋313 小时前
golang 编程规范 - Effective Go 中文
java·运维·spring boot·mysql·nginx
暮湫13 小时前
MySQL(1)概述
数据库·mysql
叫我:松哥14 小时前
基于Python django的音乐用户偏好分析及可视化系统设计与实现
人工智能·后端·python·mysql·数据分析·django
雾里看山18 小时前
【MySQL】数据库基础知识
数据库·笔记·mysql·oracle
wallezhou19 小时前
mysql数据库启动出现Plugin ‘FEEDBACK‘ is disabled.问题解决记录
数据库·mysql