Mysql binlog日志功能使用,简单易懂
一、简单了解binlog
MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select)。因此binlog日志文件我们用cat等查看文件的命令是打不开的,但是mysql提供了专门看binlog文件的命令mysqlbinlog。
binlog日志有两个最重要的使用场景:
a、mysql主从复制:mysql replication在master端开启binlog,master把它的二进制日志传递给slaves来达到master-slave数据一致的目的。
b、数据恢复:通过mysqlbinlog工具来恢复数据。
binlog日志包括两类文件:
1)、二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件。
2)、二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句select)语句事件。
二、开启mysql支持binlog
我们只需在mysql配置文件(my.cnf)中添加以下配置:
#binlog
log-bin=mysql-bin
server-id=1
binlog-format=MIXED
三、简单命令操作
- 查看是否开启binlog
mysql> show variables like 'log_%';
+----------------------------------------+-----------------------------+
| Variable_name | Value |
+----------------------------------------+-----------------------------+
| log_bin | ON |
| log_bin_basename | /data/mysql/mysql-bin |
| log_bin_index | /data/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| log_builtin_as_identified_by_password | OFF |
| log_error | /data/mysql/mysql.err |
| log_error_verbosity | 3 |
| log_output | FILE |
| log_queries_not_using_indexes | OFF |
| log_slave_updates | OFF |
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| log_statements_unsafe_for_binlog | ON |
| log_syslog | OFF |
| log_syslog_facility | daemon |
| log_syslog_include_pid | ON |
| log_syslog_tag | |
| log_throttle_queries_not_using_indexes | 0 |
| log_timestamps | UTC |
| log_warnings | 2 |
+----------------------------------------+-----------------------------+
21 rows in set (0.00 sec)
lon_bin对应的value值为on,意为开启
- 查看所有的binlog文件,文件地址默认存储在数据文件路径
mysql> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 154 |
+------------------+-----------+
1 row in set (0.00 sec)
- 查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值。
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 793 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
- flush 刷新log日志,自此刻开始产生一个新编号的binlog日志文件;
mysql> flush logs;
Query OK, 0 rows affected (0.01 sec)mysql> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 840 |
| mysql-bin.000002 | 154 |
+------------------+-----------+
2 rows in set (0.00 sec)
- 重置(清空)所有binlog日志
mysql> reset master;
Query OK, 0 rows affected (0.01 sec)mysql> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 154 |
+------------------+-----------+
1 row in set (0.00 sec)
四、查看binlog日志文件内容
第一种使用自带的mysqlbinlog命令
./mysqlbinlog /data/mysql/mysql-bin.000001 # 下面截取一部分日志内容
/*!*/;
# at 316
#231007 14:43:04 server id 1 end_log_pos 474 CRC32 0xff3b1884 Query thread_id=10 exec_time=0 error_code=0
use `qinglvjizhang`/*!*/;
SET TIMESTAMP=1696660984/*!*/;
INSERT INTO `testdb`.`test`(`id`, `name`) VALUES (2, '111')
/*!*/;
# at 474
#231007 14:43:04 server id 1 end_log_pos 505 CRC32 0x122dcfc5 Xid = 66
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
通过binlog恢复数据原理:通过日志文件我们可以看到这里面记录我们操作数据库时的sql语句,当我们误操作删除某条数据,便可以通过该记录找出删除的数据,并通过对应sql进行重新插入,这样数据就恢复了。但是实际生产中,文件内容非常多,而且出现事故往往不会是一条两条的数据,这时在用自带的命令去看就非常麻烦,因此还有第二种查看日志的方法。
第二种使用命令:mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
参数解释:
a、IN 'log_name':指定要查询的binlog文件名(不指定就是第一个binlog文件)
b、FROM pos:指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
c、LIMIT【offset】:偏移量(不指定就是0)
d、row_count :查询总条数(不指定就是所有行)
通过这种方式我们在大量数据中可以一步一步确定发生问题数据的部分,从而进行数据恢复。万变不离其宗,掌握恢复数据的思路,具体问题具体分析!!!
相关文章:
Mysql binlog日志功能使用,简单易懂
一、简单了解binlog MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select)。因此binlog日志文件我们用cat等查看文件的命令是打不开的,但是mysql提供了专门看binlog文件的命令…...
计算机视觉-光源的目的和作用
光源的目的 机器视觉系统的核心是图像采集和图像处理,而光源则是影响图像水平的重要因素,通过适当的光源照明,使图像中的目标信息与背景信息得到更好的分离,可大大降低图像识别难度,提高系统的精度和可靠性。 对于机器…...
源码角度分析Java 循环中删除数据为什么会报异常
一、源码角度分析Java 循环中删除数据为什么会报异常 相信大家在之前或多或少都知道 Java 中在增强 for中删除数据会抛出:java.util.ConcurrentModificationException 异常,例如:如下所示程序: public class RmTest {public sta…...
leetCode 229. 多数元素 II + 摩尔投票法 + 进阶 + 优化空间
229. 多数元素 II - 力扣(LeetCode) 给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。 (1)哈希表 class …...
5 个编写高效 Makefile 文件的最佳实践
在软件开发过程中,Makefile是一个非常重要的工具,它可以帮助我们自动化构建、编译、测试和部署。然而,编写高效的Makefile文件并不是一件容易的事情。在本文中,我们将讨论如何编写高效的Makefile文件,以提高我们的开发…...
20231028刷题记录
P3381 【模板】最小费用最大流 Portal. sol. 注意 SPFA 找最小费用增广路时不要到终点就返回,因为到终点的路径可能有多条不能确定哪条是费用最小的。 P2740 [USACO4.2] 草地排水Drainage Ditches Portal. 最大流模板。 注意区分 N , M N,M N,M。 CF609D G…...
39 深度学习(三):tensorflow.data模块的使用(基础,可跳)
文章目录 data模块的使用基础api的介绍csv文件tfrecord data模块的使用 在训练的过程中,当数据量一大的时候,我们纯读取一个文件,然后每次训练都调用相同的文件,然后进行处理是很不科学的,或者说,当我们需…...
css四种导入方式
1 行内样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <h1 style"color: blue">我是标题</h1> </body> </htm…...
Linux学习第24天:Linux 阻塞和非阻塞 IO 实验(一): 挂起
Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 在正式开始今天的笔记之前谈一下工作中遇见的一个问题。 本篇笔记主要学习Linux 阻塞和非阻塞 IO 实验,主要包括阻塞和非阻塞简介、等待队列、轮询、…...
037-第三代软件开发-系统音量设置
第三代软件开发-系统音量设置 文章目录 第三代软件开发-系统音量设置项目介绍系统音量设置QML 实现C 实现 总结一下 关键字: Qt、 Qml、 volume、 声音、 GPT 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Obj…...
Python 自动化详解(pyautogui)
文章目录 1 概述1.1 第三方库:pyautogui1.2 坐标说明 2 操作对象2.1 鼠标2.1.1 定位2.1.2 移动2.1.3 拖动2.1.4 滚动2.1.5 点击 2.2 键盘2.2.1 输入2.2.2 按键2.2.3 快捷键 2.3 屏幕2.3.1 截图2.3.2 分辨率 2.4 信息提示2.4.1 提示框2.4.2 选择框2.4.3 密码输入2.4.…...
【Linux】第四站:Linux基本指令(三)
文章目录 一、时间相关的指令1.指令简介2.使用 二、cal指令三、find指令 -name1.介绍2.使用 四、grep指令1.介绍2.使用 五、zip/unzip指令1.介绍2.zip的安装3.使用 六、tar指令:打包解包,不打开它、直接看内容1.介绍2.使用 七、bc指令八、uname -r指令1.…...
SpringBoot内置工具类之断言Assert的使用与部分解析
先例举一个service的demo中用来验证参数对象的封装方法,使用了Assert工具类后是不是比普通的 if(xxx) { throw new RuntimeException(msg) } 看上去要简洁多了? 断言Assert工具类简介 断言是一个判断逻辑,用来检查不该发生的情况ÿ…...
如何检测租用的香港服务器是不是CN2线路呢?
CN2,是中国电信新一代融合承载网络,是为电信自身关键业务和具有QoS保证的SLA业务服务的,可以提供高性能的网络指 标,平均单向时延、最大单向时延、单向丢包率等均属于顶尖水平。简单地说,CN2和普通网络,就像…...
Spring Boot进阶(94):从入门到精通:Spring Boot和Prometheus监控系统的完美结合
📣前言 随着云原生技术的发展,监控和度量也成为了不可或缺的一部分。Prometheus 是一款最近比较流行的开源时间序列数据库,同时也是一种监控方案。它具有极其灵活的查询语言、自身的数据采集和存储机制以及易于集成的特点。而 Spring Boot 是…...
Redis(02)| 数据结构-SDS
一、键值对数据库是怎么实现的? 在开始讲数据结构之前,先给介绍下 Redis 是怎样实现键值对(key-value)数据库的。 Redis 的键值对中的 key 就是字符串对象,而 value 可以是字符串对象,也可以是集合数据类型…...
HackTheBox-Starting Point--Tier 0---Preignition
文章目录 一 题目二 实验过程 一 题目 Tags Web、Custom Applications、Apache、Reconnaissance、Web Site Structure Discovery、Default Credentials译文:Web、定制应用程序、Apache、侦察、网站结构发现、默认凭证Connect To attack the target machine, you …...
售货机相关的电路
一、货道选通矩阵电路,类似扫描电路,驱动哪个电机,就打开相应的行线与列线输出 二、MDB纸币器,虽然现在国内都是手机支付,但如果机器还是外销国外还是有用 三、硬币器电路,投币与退币,脉冲信号…...
软考高项(十四)项目沟通管理 ★重点集萃★
👑 个人主页 👑 :😜😜😜Fish_Vast😜😜😜 🐝 个人格言 🐝 :🧐🧐🧐说到做到,言出必行&am…...
Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第五章 高效的多线程日志
“日志(logging)”有两个意思: 1.诊断日志(diagnostic log)。即log4j、logback、slf4j、glog、g2log、log4cxx、log4cpp、log4cplus、Pantheios、ezlogger等常用日志库提供的日志功能。 2.交易日志(trasac…...
机器学习模型自洽性:方差、公平性与弃权机制
1. 项目概述:当机器学习模型“拿不准”时,我们该让它闭嘴吗?在机器学习,尤其是涉及公平性决策的场景里,我们常常面临一个两难困境:模型必须给出一个明确的“是”或“否”的答案,但有时它自己内部…...
毕业论文查重不花一分钱?书匠策AI这个免费功能,90%的同学还不知道!
嗨,同学们好,我是你们的论文写作科普搭子。 今天要跟大家聊一个所有毕业生都绕不开的坎——论文查重。 先问大家一个扎心的问题:你的论文查重花了多少钱? 我见过有同学前前后后查了五六次,光查重费就花了上千块。更…...
做一些真正有意义的研究,比如攻克某种疾病,或者探索LLM技术如果我拥有了花不完的钱,我会做什么?
如果我拥有了花不完的钱,我会做什么? 目录 如果我拥有了花不完的钱,我会做什么? 这才是对"人生意义"最诚实的回答 彻底消除所有的痛苦和匮乏 第二阶段:满足所有的好奇心和体验欲 第三阶段:创造一些真正有价值的东西 成为一个更好的人 写在最后 这才是对"…...
SPT-AKI Profile Editor:终极《逃离塔科夫》离线存档编辑器完全指南
SPT-AKI Profile Editor:终极《逃离塔科夫》离线存档编辑器完全指南 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com…...
社交媒体心理健康检测:从TF-IDF到ALBERT的文本分类实战
1. 项目整体设计与思路拆解在社交媒体成为人们日常情绪表达主要出口的今天,利用这些公开文本数据来洞察用户的心理健康状态,已经从一个前沿研究课题,逐渐走向实际应用。我接触这个方向有几年了,从最初简单的关键词匹配,…...
Thorium浏览器:基于Chromium的终极性能优化与隐私保护深度解析
Thorium浏览器:基于Chromium的终极性能优化与隐私保护深度解析 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the to…...
终极免费方案:5分钟解锁Windows多用户远程桌面完整指南
终极免费方案:5分钟解锁Windows多用户远程桌面完整指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows家庭版限制远程桌面连接而烦恼吗?RDP Wrapper Library为您提供完美的解…...
3步实现Windows任务栏透明化:从新手到专家的桌面美化全攻略
3步实现Windows任务栏透明化:从新手到专家的桌面美化全攻略 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB Windows任务栏透明…...
Keil ULINK强制全片擦除与CRC校验实践
1. 问题现象与背景解析当使用Keil开发环境配合ULINK调试器对英飞凌C166系列微控制器进行程序烧录时,部分工程师会遇到一个看似奇怪的现象:明明在代码中设置了全片CRC校验逻辑,但实际运行时却出现校验失败。经过排查发现,ULINK默认…...
Windows 11 + Ubuntu 20.04双系统避坑:搞定WiFi图标消失的完整保姆级流程
Windows 11与Ubuntu 20.04双系统WiFi修复全指南1. 双系统网络问题的根源探究刚完成Windows 11和Ubuntu 20.04双系统安装的用户,经常会遇到一个令人头疼的问题——Ubuntu系统下WiFi图标神秘消失。这不是个例,而是双系统环境下相当普遍的现象。要彻底解决这…...
