MySQL 日志 - Binlog

news/2024/10/10 22:41:18/

文章目录

  • binlog 的格式
  • mysqbinlog 工具
  • SHOW binlog events;
  • binlog 和 redo log 对比

https://dev.mysql.com/doc/refman/8.4/en/binary-log.html

binlog 全称 BinaryLog,是 MySQL 数据库中用于记录所有更改数据库状态的事件的日志文件。它主要用于以下几个目的:

  1. 数据恢复:在数据库出现故障时,可以利用 binlog 中的记录恢复数据到一个特定的时间点。
  2. 主从复制:在主从架构中,从库可以通过读取主库的 binlog 来同步数据,实现数据的复制和备份。
  3. 审计和监控:通过分析 binlog,可以监控数据库中的数据变更,进行审计和性能分析。

binlog 的特点

  1. 二进制格式:binlog 以二进制格式存储数据,相较于文本日志更为高效。
  2. 事件驱动:记录每个数据修改操作的事件,而不是简单的 SQL 语句。
  3. 可配置性:可以根据需要配置 binlog 的格式以及其存储方式。

binlog 的格式

https://dev.mysql.com/doc/refman/8.4/en/binary-log-formats.html

MySQL 的 binlog 有三种主要的日志格式:行格式、语句格式和混合格式。每种格式都有其特点、优缺点和适用场景。

  1. 行格式(ROW):记录每一行数据的变化,而不是 SQL 语句。
    优点:更加准确,能够捕捉到具体的数据变化。在处理复杂的 SQL 语句时,能够避免语句重放带来的不一致性问题。
    缺点:日志文件可能会变得很大,因为每一行的变化都要记录。对于大批量的操作,性能开销较大。
    使用场景:适合对数据一致性要求高的场景,尤其是涉及到复杂的业务逻辑和多表操作时。
  2. 语句格式(STATEMENT)
    特点:记录执行的 SQL 语句。
    优点:日志文件较小,存储效率高。适合简单的插入、更新和删除操作。
    缺点:对于某些非确定性的操作(如使用 NOW()、RAND() 等函数),可能会导致在主从复制时出现不一致。当 SQL 语句的逻辑复杂时,重放可能无法达到预期效果。
    使用场景:适合简单的、确定性操作的场景,或是数据变更较少的情况。
  3. 混合格式(MIXED)
    特点:结合了行格式和语句格式,根据具体的操作自动选择使用哪种格式。
    优点:兼具行格式和语句格式的优点,能够在性能和一致性之间取得平衡。
    自动选择最合适的格式,简化了配置和使用。
    缺点:在某些情况下,可能会引入复杂性,需要理解选择的逻辑。需要良好的监控和管理,以确保没有不一致性。
    使用场景:适合大多数场景,尤其是需要在性能和一致性之间找到平衡的应用。

总结

日志格式优点缺点使用场景
行格式 (ROW)数据变更准确,避免不一致性日志文件较大,性能开销大高一致性要求的复杂操作
语句格式 (STATEMENT)日志文件小,存储效率高可能导致不一致,复杂操作重放问题简单、确定性操作
混合格式 (MIXED)性能与一致性平衡,自动选择最合适格式可能引入复杂性,需要良好监控大多数场景,需要平衡性能和一致性

mysqbinlog 工具

可以使用 mysqlbinlog 工具查看或处理 binlog 的内容

mysqlbinlog [options] log_file_name

常用选项

  • -h, --host=name:指定 MySQL 服务器的主机名或 IP 地址。
  • -u, --user=name:指定连接 MySQL 使用的用户名。
  • -p, --password[=name]:指定连接 MySQL 使用的密码。
  • –port=#:指定连接 MySQL 使用的端口号。
  • -r, --start-position=#:从指定的位置开始读取 binlog。
  • -S, --socket=name:指定 Unix 套接字文件的路径。
  • –database=name:只显示特定数据库的事件。
  • –start-datetime=‘YYYY-MM-DD HH:MM:SS’:从指定的时间开始读取 binlog。
  • –stop-datetime=‘YYYY-MM-DD HH:MM:SS’:直到指定的时间停止读取 binlog。
  • –verbose:显示更详细的输出信息。

SHOW binlog events;

SHOW BINLOG EVENTS 是 MySQL 中的一个命令,用于显示指定 binlog 文件中的事件信息。这个命令可以帮助用户了解 binlog 中记录了哪些操作,以及这些操作的具体细节。

  1. 该命令可以列出 binlog 中的所有事件类型,如 INSERT、UPDATE、DELETE 等。
  2. 获取事件位置:显示每个事件的位置信息,方便后续的恢复或复制操作。
  3. 分析数据变更:通过查看事件,可以分析特定时间段内的数据变更情况,有助于审计和监控。
  4. 调试和故障排查:在出现数据不一致或复制延迟等问题时,可以通过 SHOW BINLOG EVENTS 来诊断问题。

执行该命令后,通常会返回以下列的信息:
在这里插入图片描述

  1. Log Name:binlog 文件的名称。
  2. Pos:事件在 binlog 文件中的位置。
  3. Event Type:事件的类型(如 Query、Table_map、Write_rows 等)。
  4. Server Id:产生事件的服务器 ID。
  5. End Log Pos:事件结束时的位置。
  6. Info:事件的详细信息,通常是 SQL 语句或操作描述。

binlog 和 redo log 对比

下面是 binlog 和 redolog 的一些对比:

特性binlog redo log
目的记录所有数据库更改,支持数据恢复和主从复制确保事务的持久性和数据一致性
存储内容SQL 语句或更改事件对数据页的具体修改操作
位置存储在磁盘上,通常以 binlog.000001 命名存储在 InnoDB 的日志文件中,如 ib_logfile0, ib_logfile1
使用场景数据恢复、主从复制、审计崩溃恢复、事务一致性
读取方式使用 mysqlbinlog 工具查看和处理由数据库内部管理,用户一般不直接查看
性能适合数据变更量大时使用快速恢复数据页状态,适合高并发事务处理

http://www.ppmy.cn/news/1537151.html

相关文章

Spark常用RDD算子:transformation转换算子以及action触发算子

文章目录 1. 算子(方法)介绍2. 常用transformation算子2.1 map 2.2 flatMap2.3 filter2.4 distinct2.6 groupBy2.7 sortBy()2.8 k-v数据[(k,v),(k1,v1)] 3. 常用action算子 1. 算子(方法)介绍 rdd中封装了各种算子方便进行计算&a…

python34_可变字符串

可变字符串 说明 在 Python 中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,智能创建新的字符串对象。 但是,经常我们确实需要原地修改字符串,可以使用 io.StringIO对象或 array 模块impo…

【论文阅读】Segment Anything Model for Road Network Graph Extraction

【论文阅读】Segment Anything Model for Road Network Graph Extraction (CVPRW 2024) Paper链接:https://openaccess.thecvf.com/content/CVPR2024W/SG2RL/html/Hetang_Segment_Anything_Model_for_Road_Network_Graph_Extraction_CVPRW_2024_paper.html 文章目录…

关系运算(2)

关系代数 上一篇博客已经讲了基本关系代数运算的内容,今天来讲附加关系代数运算。 附加关系代数运算 交运算∩ 查询计算机系年龄大于等于18的学生的信息 跟并集∪一样都是需要先进行选择运算然后再进行二元的交集运算。 其实交运算也可以用差运算来表示&#xff…

国际 Android WPS Office v18.13 解锁版

WPS Office 移动版,设计不断优化,性能再次提升!融入Google Android最新设计标准,Material Design设计风格,完美支持沉浸式!简化文档操作,全新移动办公力作。全新界面更清晰舒适,功能…

27.数据结构与算法-图的遍历(DFS,BFS)

遍历定义与遍历实质 图的特点 图的常用遍历方法 深度优先搜索-DFS 邻接矩阵表示的无向图深度遍历实现 DFS算法效率分析 非连通图的遍历 广度优先搜索遍历-BFS 邻接表表示的无向图广度遍历实现 BFS算法效率分析 非连通图的广度遍历 DFS和BFS算法效率比较

罗永浩力荐格行随身WiFi,背后原因竟是...你绝对想不到!

一、罗永浩的“严选”哲学 虽然罗永浩做的是直播带货,但是他的形象与其他头部主播之间有着明显的不同。那些头部主播,都可以统称为“电商主播”,他们与那些淘宝店、京东店里直播的商家本质是一样的,只有流量和名气大小不同罢了。…

单目三d重建学习笔记2024

从单目视频生成动态多物体场景 已经开源: https://github.com/dreamscene4d/dreamscene4d 2021年: 浙大团队研发NeuralRecon,首个基于学习的实时单目三维重建系统 https://github.com/zju3dv/NeuralRecon https://github.com/zju3dv/Neura…