MySQL 日志 - Binlog

embedded/2024/10/10 22:40:10/

文章目录

  • 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/embedded/125578.html

相关文章

C++ 功能使用技巧

1. 通过C执行shell指令,比如,在代码中查找进程名称,并进行终止 2.单实例线程操作 1. 要点 snprintf 函数被用于构建一个包含多个命令的字符串 在C语言中,system函数用于执行shell命令 在C或C编程中,::mkdir 函数用…

0基础跟德姆(dom)一起学AI 机器学习03-线性回归

线性回归 线性回归介绍 【理解】举个栗子 假若有了身高和体重数据,来了播仔的身高,你能预测播仔体重吗? 这是一个回归问题,该如何求解呢? **思路**:先从已知身高X和体重Y中找规律,再预测 •数学问题:用一条线来拟…

Unity各个操作功能+基本游戏物体创建与编辑+Unity场景概念及文件导入导出

各个操作功能 部分功能 几种操作游戏物体的方式: Center:有游戏物体父子关系的时候,中心点位置 Global/Local:世界坐标系方向/自身坐标系方向 :调试/暂停/下一帧 快捷键 1.Alt鼠标左键:可以实现巡游角度查看场景 2.鼠标滚轮…

二、MySQL的数据目录

文章目录 1. MySQL8的主要目录结构1.1 数据库文件的存放路径1.2 相关命令目录1.3 配置文件目录 2. 数据库和文件系统的关系2.1 查看默认数据库2.2 数据库在文件系统中的表示2.3 表在文件系统中的表示2.3.1 InnoDB存储引擎模式2.3.2 MyISAM存储引擎模式 2.4 小结 1. MySQL8的主要…

蓝桥杯:求平均年龄

#include<stdio.h> int main() { int num 0; float age 0,sum0; printf("请输入总人数: "); scanf_s("%d" ,& num); for (int i1; i <num;i) { scanf_s("%f", &age); sum age…

多模态简单了解

多模态 1.文本编码2. ViT图像编码器2.1图像矩阵self-attention计算&#xff1a; 3.Transformer多模态3.1CLIP 图文交互3.2 对比学习训练3.3 flamingo 图文交互3.4 LLava 图文交互 1.文本编码 简介&#xff1a; 即通过embedding将字符向量化&#xff0c;进入模型即可。 2. ViT…

理解PID(零)——什么是PID

PID控制器是一种广泛用于各种工业控制场合的控制器&#xff0c;它结构简单&#xff0c;可以根据工程经验整定参数Kp,Ki,Kd. 虽然现在控制专家提出了很多智能的控制算法&#xff0c;比如神经网络&#xff0c;模糊控制等&#xff0c;但是PID仍然被广泛使用。常见的PID控制器有位置…

脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO

原文链接&#xff1a;CSDN-脉冲神经网络&#xff08;SNN&#xff09;论文阅读&#xff08;六&#xff09;-----ECCV-2024 脉冲驱动的SNN目标检测框架&#xff1a;SpikeYOLO Integer-Valued Training and Spike-Driven Inference Spiking Neural Network for High-performance …