有时候直接操作数据库,可能会出现误删除一些数据的情况,比如删了某个表中某一行数据,事后发现该条数据是误删的,还需要恢复,但是又不太记得具体每个字段原来的数据是什么了,只能要查到之前删掉的数据每个字段值都是什么,才能恢复数据,这时候,就需要查找操作日志,找到之前做的删除操作,把数据重新恢复。
找到日志文件
1. 首先,要找到mysql的日志文件存放在服务器的哪个路径。可以用以下命令来找到日志所在:
截取指定时间段的log
2. 去数据库所在服务器,找到所在时间段的log(误删数据的那个时间段),记住文件路径和名字:
3. 进入到数据库安装路径的bin路径下
4. 使用如下命令,拿出对应时间段的log:
mysqlbinlog --no-defaults
--database=XXX
--start-datetime="2021-06-22 09:18:00" --stop-datetime="2021-06-22 09:40:00"
/data/mysql/binlogs/mysql-bin.000027
|
grep jiraissue > jira_opt.txt
上面命令中,
--database=XXX
填写自己的库名,
grep jiraissue > jira_opt.txt
是做下初步筛查,比如我知道自己是误删除的 jiraissue这个表的数据,就只把这些相关的数据搜出来,放到自定的jira_opt.txt文本文件中。
5. 打开txt文件,根据起止时间,找一个标志点:
导出误操作的SQL
6. 运行如下命令,导出SQL语句:
mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v --start-position=
970222536
--stop-position=
973499062
--database=jiradb /data/mysql/binlogs/mysql-bin.000027
>
restore11.sql
7. 从导出的SQL语句中,查看自己删除的那条数据
反写SQL
8. binlog2sql可以将binlog进行反向解析(可自行搜索方法)。
或者数据量不大的话,直接自己反写一下,在SQL执行即可。
有时候直接操作数据库,可能会出现误删除一些数据的情况,比如删了某个表中某一行数据,事后发现该条数据是误删的,还需要恢复,但是又不太记得具体每个字段原来的数据是什么了,只能要查到之前删掉的数据每个字段值都是什么,才能恢复数据,这时候,就需要查找操作日志,找到之前做的删除操作,把数据重新恢复。本文重点讲解怎么找到误删的数据。
如果你在
MySQL
中
误删
了
数据
,你可以尝试以下几种方法来
恢复
它们:
1. 利用备份进行
恢复
:如果你有备份
数据
库,你可以从备份中
恢复
你
误删
的
数据
。你可以使用
MySQL
自带的
mysql
dump 工具来备份
数据
库。
2. 利用 binlog 进行
恢复
:
MySQL
中的 binlog 记录了所有
数据
库的修改
操作
,包括删除
数据
。你可以使用
mysql
binlog 工具来查看 binlog,找到
误删
数据
的
操作
,然后执行相反的
操作
来
恢复
数据
。
3. 使用第三方工具进行
恢复
:有很多第三方工具可以用来
恢复
误删
数据
,比如:Undelete
MySQL
、Recover
MySQL
等。你可以搜索并选择一个适合的工具来进行
数据
恢复
。
需要注意的是,在进行
数据
恢复
的过程中,你需要确保没有新的
数据
写入到
数据
库中,否则你
恢复
的
数据
可能不完整或者不正确。另外,
数据
恢复
工作需要谨慎
操作
,以免造成更大的损失。