windows下mysql中binlog日志分析和数据恢复

news/2025/1/9 1:18:26/

1.首先查看是否开启了binlog

show variables like '%log_bin%';

在这里插入图片描述
看到了是没有开启的。

2.开启binlog日志,并重启mysql服务

不能通过命令的方式去打开,因为会提示说这个参数是只读的。如下图:
在这里插入图片描述

所以,打开mysql的配置文件,找到mysql的配置文件(和Linux下的文件名是不一样的,Linux是my.cnf),windows默认的在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini

在[mysqld]节点下添加log-bin= mysqlbinlog
binlog-format=ROW

在这里插入图片描述
配置好之后,要进行重启mysql服务,没有重启之前该路径目录长这样子
在这里插入图片描述
重启服务
在任务管理器中找到mysql右键点击重新启动。
在这里插入图片描述
重启服务之后该文件的目录长这样子,新添加了如图所示的文件。
在这里插入图片描述
此时在命令行中再去查看是否开启了binlog,
在这里插入图片描述

3.查看有哪些binlog文件和正在使用的binlog文件

查看有哪些binlog文件

show binary logs;
或者
show master logs;

在这里插入图片描述
查看当前正在使用的是哪一个binlog文件

show master status;

在这里插入图片描述

4.binlog中的事件(show binlog events)数据恢复就会使用到该命令

我们执行命令都是以事件的形式操作的

 查看所有的事件show binlog events;当binlog文件比较多的时候可以加条件来查看具体的某一个文件中的所有事件show binlog events in 'mysqlbinlog.000001';

在这里插入图片描述

5.创建一个数据库和一张表并插入数据之后再次查看binlog中的事件(show binlog events)

create database binlogtest;

在这里插入图片描述
创建数据库后,再查看binlog日志文件,就看到刚刚执行的创建数据库的命令事件。

在这里插入图片描述
在刚才创建的数据库下面新建一张测试表并插入数据。

mysql> use binlogtest;
Database changed
mysql>
CREATE TABLE test (id int NOT NULL AUTO_INCREMENT,name varchar(10) DEFAULT NULL,age int DEFAULT 0,PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;mysql> insert into test values(1,'zhangsan',20);
Query OK, 1 row affected (0.01 sec)mysql> insert into test values(2,'lisi',30);
Query OK, 1 row affected (0.00 sec)mysql> insert into test values(3,'wangwu',40);
Query OK, 1 row affected (0.00 sec)
show binlog events in 'mysqlbinlog.000001';

已经将创建数据库、创建表、新增数据库日志都添加进去了。
在这里插入图片描述

6.查看binlog文件中的内容(mysqlbinlog)

由于binlog是二进制的文件,是不能直接查看的,可以使用mysqlbinlog命令就可以转换成人能够看懂的内容,进入到C:\ProgramData\MySQL\MySQL Server 5.7\Data下面打开cmd
结尾没有分号

mysqlbinlog "mysqlbinlog.000001"或者将binlog文件换成人能够看懂的文件
mysqlbinlog "mysqlbinlog.000001">"test.sql"

在这里插入图片描述

转成文件
在这里插入图片描述
在这里插入图片描述在控制台不好看,用记事本打开方便查看
在这里插入图片描述

7.数据恢复

在这里插入图片描述
现在做了一个伟大的壮举,,,删库了
在这里插入图片描述
已经删库了,现在要进行数据的恢复
查看有哪些binlog文件(这个binlog文件是重启一次mysql服务就会形成一个新的文件mysqlbinlog.000002 …后缀依次累加)

show binary logs;

在这里插入图片描述
查看删库之前执行过的操作事件,并找到要恢复数据的起点和终点(这里在控制到中看起来比较费劲,可以借助别的软件如:navicat)

show binlog events;
或者
show binlog events in 'mysqlbinlog.000001';

在这里插入图片描述
那就以创建数据库为起点,以删库之前为终点
为了方便查看我将上图show binlog events;
结果复制到excel中
在这里插入图片描述
binlog命令恢复数据

mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -proot 

在这里插入图片描述
提示信息不需要理会,要是有强迫症,那你就先

mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -p
回车
再次单独输入密码
root

在这里插入图片描述

8.总结

简单来说,要恢复数据
1.查看当前使用的binlog文件是那个

show binary logs; --文件列表
show master status; --当前使用的是哪个文件

2.针对当前使用的文件查看事件,以此来确认要恢复数据的终点和起点

show binlog events;
或者
show binlog events in 'mysqlbinlog.000001';

3.携带起点和终点,执行数据恢复命令

mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -proot 

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

相关文章

英文论文(sci)解读复现【NO.13】基于YOLOv5的自然场景下苹果叶片病害实时检测

此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

深入剖析Linux线程特定数据

深入剖析Linux线程特定数据 一、线程特定数据简介(Thread-Specific Data Introduction)1.1 线程特定数据的定义(Definition of Thread-Specific Data)1.2 线程特定数据的作用(The Role of Thread-Specific Data&#x…

Android 12系统源码_WindowInsets (一)WindowInsets相关类和功能介绍

一、什么是WindowInsets? WindowInsets源码解释为Window Content的一系列插值集合,可以理解为可以将其理解为不同的窗口装饰区域类型,比如一个Activity相对于手机屏幕需要空出的地方以腾给StatusBar、Ime、NavigationBar等系统窗口,具体表现为该区域需要的上下左右的宽高。…

基于SpringBoot+Vue的搬家服务系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 当今社会,…

ES 查询及写入优化

1、ES调优手段 1.1、设计阶段调优 ES数据区分热、温、冷三个阶段 ES索引按月滚动生成 mapping设置合理的数据类型是否需要分词 使用别名管理索引??? 1.2、数据写入优化 1> 单条写入改为多条数据写入 2> 自动生成ID 3> 索引刷盘时间,…

优思学院:空降兵,是组织的一场考验

为什么80%的空降高管会失败? 空降高管是指在组织内部进行职位调动或新人招聘时,将外部人员直接安排到高层管理职位的一种人才引进方式。然而,虽然空降高管可能带来新的思维和经验,但事实证明,这种方式并不总是成功的。…

SQL语句练习附带答案

首先创建数据库filmclub DROP DATABASE IF EXISTS filmclub;CREATE DATABASE filmclub;USE filmclub;CREATE TABLE category (cid INT PRIMARY KEY AUTO_INCREMENT,cname VARCHAR(20) )CHARSETutf8; CREATE TABLE film (fid INT PRIMARY KEY AUTO_INCREMENT,fname VARCHAR(20)…

【Python】正则表达式应用

知识目录 一、写在前面✨二、姓名检查三、解析电影排行榜四、总结撒花😊 一、写在前面✨ 大家好!我是初心,希望我们一路走来能坚守初心! 今天跟大家分享的文章是 正则表达式的应用 ,希望能帮助到大家!本篇…