Mysql之binlog日志浅析

news2024/11/27 2:28:51

一、binlog日志简介

  Binlog是MySQL数据库中的二进制日志,用于记录数据库中所有修改操作,包括增删改等操作。binlog以二进制格式保存,可以通过解析binlog文件来查看数据库的操作历史记录。binlog日志可以用于数据恢复、数据备份、数据同步等场景。在MySQL数据库中,binlog有两种模式:statement模式和row模式。statement模式记录的是SQL语句,row模式记录的是每一行数据的变化。binlog日志的开启和关闭可以通过设置MySQL的配置文件实现。
  Binlog是MySQL数据库中非常重要的组件之一,Binlog的全称是Binary Log,它是一种二进制日志文件,记录了MySQL数据库中所有的修改操作,包括增、删、改等。这些修改操作可以通过Binlog进行恢复和备份,从而保证数据的安全性和完整性。
  Binlog的作用非常重要,它可以用来进行数据恢复和备份,也可以用来进行数据同步和复制。在进行数据恢复时,可以使用Binlog来恢复数据到某个时间点或某个操作之前的状态,从而保证数据的完整性。在进行数据备份时,可以将Binlog文件备份到另一台服务器上,以便在主服务器出现问题时,可以快速地将备份服务器恢复到与主服务器相同的状态。
  除了数据恢复和备份外,Binlog还可以用来进行数据同步和复制。在进行数据同步时,可以将Binlog文件传输到其他服务器上,从而将数据同步到其他服务器中。在进行数据复制时,可以将Binlog文件传输到备份服务器上,从而将备份服务器上的数据与主服务器上的数据保持一致。

二、binlog日志常用知识点

1、开启binlog日志

  mysql开启binlog的方式是在配置文件中配置参数log-bin = /binlogdir/binlogname,其中binlogdir是binlog日志的存储路径,binlogname是binlog日志文件名前缀,配置了该参数表示启用binlog日志,未配置参数表示禁用binlog日志。生成的binlog日志文件名通常是这样的mybinlog.000001,后面的序号随着使用递增。该参数为静态参数,修改参数后需要重启生效。

在这里插入图片描述

2、binlog日志文件大小分割

  使用max_binlog_size参数值设定binlog日志文件的大小,举个栗子,max_binlog_size = 1G,表示在binlog日志文件在大于1G的时候进行分割,即文件大小大于1073741824后新生成一个binlog日志文件,序号增1。当然binlog日志文件分割是在结束一个事务操作后的日志记录,所以binlog日志文件实际大小是大于等于1073741824的。

[bdsc@s250 logs]$ ll
total 75945060
-rw-r-----. 1 bdsc bdsc 1074332741 Jun 4 18:53 mybinlog.000001
-rw-r-----. 1 bdsc bdsc 1073822182 Jun 4 20:11 mybinlog.000002
-rw-r-----. 1 bdsc bdsc 1074277669 Jun 4 21:30 mybinlog.000003

在这里插入图片描述

3、设置binlog日志保留时间

  使用expire_logs_days参数设置binlog日志保存时间,超过日期的binlog日志将自动清除。

mysql> show variables like ‘expire_logs_days’;
±-----------------±------+
| Variable_name | Value |
±-----------------±------+
| expire_logs_days | 7 |
±-----------------±------+
1 row in set (0.01 sec)

4、设置binlog格式

  使用binlog_format参数设置设置binlog日志格式,row格式最可靠,但是会产生大量的binlog日志文件。

mysql> show variables like ‘binlog_format’;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| binlog_format | ROW |
±--------------±------+
1 row in set (0.00 sec)

5、查看binlog日志内容

  binlog日志文件是二进制格式,直接查看是乱码,我们可以使用mysqlbinlog命令查看日志文件。日志文件里会记录日志的起始位置,以及执行的sql语句。查看的时候还可以使用参数查看指定时间段内的某数据库的日志。也可以使用命令“mysqlbinlog --start-postion=107 --stop-position=1000 -d 库名 二进制文件”查看指定位置之间的某数据库日志。

mysqlbinlog --start-datetime=‘2023-06-01 00:00:00’ --stop-datetime=‘2023-06-10 00:00:00’ -d utest mybinlog.000068

在这里插入图片描述

在这里插入图片描述

6、按照binlog名称清理binlog日志

  我们可以在sql脚本中使用“PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);”命令清理历史binlog日志,也可以在交互模式下按照名称清理binlog日志。

mysql> purge binary logs to ‘mybinlog.000005’;
Query OK, 0 rows affected (0.19 sec)

在这里插入图片描述

7、按照时间清理binlog日志

  我们可以使用命令purge binary logs before time方式删除指定时间前的binlog日志。

mysql> purge binary logs before ‘2023-06-5 10:12:00’;
Query OK, 0 rows affected (0.55 sec)

在这里插入图片描述

8、导出binlog日志

  导出binlog日志文件实际上就是查看的时候通过重定向的方式将日志内容输入到指定的文件。

[bdsc@s250 logs]$ mysqlbinlog --start-datetime=‘2023-06-01 00:00:00’ --stop-datetime=‘2023-06-10 00:00:00’ mybinlog.000068 > /tmp/utest.log

在这里插入图片描述

9、记录部分binlog日志

  可以使用binlog-do-db、binlog-ignore-db、binlog-do-table、binlog-ignore-table这四个参数自定义需要记录binlog日志的数据库和表。这四个参数常用于mysql搭建部分表主从模式,见博文Mysql之部分表主从搭建及新增表。

三、binlog日志三种格式简介

  MySQL的binlog日志有三种格式,分别是Statement格式、Row格式和Mixed格式。

  • Statement格式
    Statement格式是最简单的binlog格式,记录的是执行的SQL语句,可以通过解析SQL语句来恢复数据。这种格式的优点是简单、易于理解和分析,缺点是可能会出现数据不一致的情况,因为同一个SQL语句在不同的环境下可能会产生不同的结果。
  • Row格式
    Row格式是记录每一行数据的变化,包括插入、删除和更新操作。这种格式的优点是数据恢复准确、不会出现数据不一致的情况,缺点是日志量大,对于大量的数据变化会产生大量的日志。
  • Mixed格式
    Mixed格式是Statement格式和Row格式的混合体,MySQL会自动选择使用哪种格式来记录日志。对于简单的SQL语句,使用Statement格式,对于复杂的SQL语句,使用Row格式。这种格式的优点是兼顾了简单和复杂情况下的优点,缺点是可能会出现数据不一致的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/819072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧水务和物联网智能水表在农村供水工程中的应用

摘 要:随着社会的进步和各项事业的飞速发展,人民生活水平的逐步提升,国家对农村饮水安全有了更高的要求,为了进一步提升农村供水服务的质量,利用现代化、信息化科学技术提升农村供水服务质量,提高用水管理效…

对象分割技术在图像重绘上的运用

今年早些时候,Meta AI 发布了他们的新开源项目: Segment Anything Model(SAM) ,在计算机视觉社区引起了巨大的轰动。SAM 是一种快速分割系统,它擅长于对不熟悉的物体和图像进行零样本泛化,而不需要额外的训练。 在本教…

安全测试国家标准解读——函数调用安全、异常处理安全、指针安全

下面的系列文章主要围绕《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》进行讲解,该标准是2020年4月28日,由国家市场监督管理总局、国家标准化管理委员会发布,2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理&…

DCDC下垂控制算法

在并联的DC/DC转换器系统中,下垂控制(Droop Control)是一种常见的方法,用以实现在不同模块之间的功率均衡。在下垂控制策略中,每一个转换器的输出电压会随着负载的增加而减小,这样能够保证所有的转换器都在…

CSS font-family 等宽字体

CSS font-family 等宽字体 font-family: "Lucida Console", Consolas, "Courier New", Courier, monospace; font-family: Courier New, Courier, Lucida Console, Consolas, monospace; font-family: Courier, Lucida Console, Consolas, Courier New,…

【数学建模】2023 深圳杯 东三省 数学建模 B题 :电子资源版权保护问题 (基于DCT的暗水印信息嵌入模型)

在文章末尾的公众号回复:深圳杯B题,获取完整内容。 本文的文本、公式、代码都是部分展示。 文章目录 一、题目二、思路 与 解答2.1 问题一2.11 LSB 方法测试2.12 LSB 方法建模 2.2 问题二2.3 问题三2.31 方法与步骤概述2.32 基于DCT的暗水印信息嵌入模型…

第八章 HL7 架构和可用工具 - 测试转换

文章目录 第八章 HL7 架构和可用工具 - 测试转换显示段地址显示字段地址批量消息 测试转换 第八章 HL7 架构和可用工具 - 测试转换 显示段地址 要显示段地址,请将光标悬停在阴影列中的段名称上。工具提示显示以下内容: 在虚拟属性路径中使用的段地址该…

CSS样式中颜色与颜色值的应用

使用CSS描绘页面样式时,颜色是其中不可或缺的,无论是对文本、背景还是边框、阴影,我们都写过无数代码用来增添颜色。而为了让网页的色彩表现更出色,我们很有必要完整梳理下CSS中的色彩。 要讲清楚CSS中的颜色,离不开颜…

windows下tomcat无故宕机,检测http或https服务,并自动重启Tomcat服务

一、问题描述及解决原理 把项目发布到windows服务器中,如tomcat工程不稳定,会有无故宕机的问题。如果通过程序无法解决,并且重启tomcat服务能够生效的话,可以做一个自动检测并重启的脚本。 脚本通过检测tomcat对应的工程链接&…

flink1.17.0 jdk11服务的可以启动,web端无法访问

在配置文件中增加如下配置: 当前linux的ip地址,[localhsot,0.0.0.0]无效 rest.bind-address: 192.168.1.21

机器学习十大经典算法

机器学习算法是计算机科学和人工智能领域的关键组成部分,它们用于从数据中学习模式并作出预测或做出决策。本文将为大家介绍十大经典机器学习算法,其中包括了线性回归、逻辑回归、支持向量机、朴素贝叶斯、决策树等算法,每种算法都在特定的领…

使用 Docker Compose 部署单机版 Redis:简单高效的数据缓存与存储

家人们啦!今天我们来介绍如何使用 docker-compose 部署单机版 Redis,这是一个简单高效的数据缓存与存储解决方案,广泛应用于Web应用、移动应用以及各类数据处理场景。我们过后几篇文章了将会介绍cluster和sentinel集群的部署。通过本文的指导…

使用css和js给按钮添加微交互的几种方式

使用css和js给按钮添加微交互的几种方式 在现实世界中,当我们轻弹或按下某些东西时,它们会发出咔嗒声,例如电灯开关。有些东西会亮起或发出蜂鸣声,这些响应都是“微交互”,让我们知道我们何时成功完成了某件事。在本文…

切片[::-1]解析列表list表示的“非负整数加1”

列表数位表示非负整数,熟练操作“满十进位”。 (本笔记适合熟练操作Python列表list的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅…

一文搞定Java NIO,以及ZipInputStream、ByteArrayInputStream各种奇葩流

目录 一、Channel1、FileChannel代码示例2、DatagramChannel代码示例3、SocketChannel 和 ServerSocketChannel代码示例 二、Buffer1、ByteBuffer示例代码2、CharBuffer示例代码3、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer 等示例代码 三、Selector1、S…

MTK system_server 卡死导致手机重启案例分析

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、MTK AEE Log分析工具二、AEE Log分析流程三、system_server 卡死案例分析及解决 本文主要针对 Exception Type: system_server_watchdog , system_…

激光雷达供不应求?产能过剩、毛利下滑、定点兑付风险凸显

激光雷达,已经供不应求? 以小鹏最新上市的G6车型为例,目前该车的Max版本在官网下订的交付时间为12周,原因之一就是激光雷达等核心零部件交付吃紧。 截图来自网络(晚点Auto公众号) 那么事实是否如此&#xf…

【Vue2.x源码系列05】异步更新及nextTick原理

vue 官网中是这样描述 nextTick 的 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,可以获取更新后的 DOM。 在学习 nextTick 是如何实现之前,我们要先了解下 JavaScript 的执行机制 JavaScript 执行机制 浏览器是多线程的&…

Kindling the Darkness: A Practical Low-light Image Enhancer论文阅读笔记

这是ACMMM2019的一篇有监督暗图增强的论文,KinD其网络结构如下图所示: 首先是一个分解网络分解出R和L分量,然后有Restoration-Net和Adjustment-Net分别去对R分量和L分量进一步处理,最终将处理好的R分量和L分量融合回去。这倒是很常…

简要介绍 | 航行家的视觉:理解Odometry, Relocalization和SLAM的区别与联系

注1:本文系“简要介绍”系列之一,仅从概念上对计算机视觉和机器人导航中的Odometry、Relocalization和SLAM进行非常简要的介绍,不适合用于深入和详细的了解。 航行家的视觉:理解Odometry, Relocalization和SLAM的区别与联系 Senso…