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

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 
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQLbinlog是以事件形式记录了对数据库执行更改的所有操作。在数据恢复方面,可以使用mysqlbinlog工具来恢复数据。 首先,你可以使用mysqlbinlog工具来解析和转换二进制日志文件。使用命令"mysqlbinlog --start-datetime="开始时间" --stop-datetime="结束时间" --database=数据库binlog文件名 | mysql -u用户名 -p密码",其开始时间和结束时间是你想要恢复的时间范围,数据库名是你要恢复的数据库,用户名和密码是连接数据库所需的凭据。这个命令会将binlog文件指定时间范围内的操作转换为SQL语句并执行,从而恢复数据。 另外,在每次重启MySQL服务时,也会自动刷新binlog日志。此外,使用mysqldump备份数据时,如果加上-F选项,也会刷新binlog日志。所以,如果你想要恢复到最新的binlog状态,可以重启MySQL服务或者进行一次完整的备份。 需要注意的是,binlog只能记录数据库的更改操作,而不能记录表结构的变更。如果你的目标是恢复表结构的变更,可以考虑使用其他工具或备份文件来恢复。 总之,通过使用mysqlbinlog工具以及重启MySQL服务或进行完整的备份,你可以对MySQLbinlog进行数据恢复。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql binlog日志恢复【亲测有效,有例子实测】](https://download.csdn.net/download/Jay_Fred/87602788)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL binlog 数据恢复](https://blog.csdn.net/qq_39550368/article/details/126901112)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值