2021-08-12 mysql数据恢复,删表数据恢复

一、数据被删除,想恢复。先明确,必须有两个条件。 


1、数据库备份文件;2、binlog记录的文件。(记录执行的所有sql操作)
如:某个表被删除,时间在2012-12-12。
查找最近的备份文件,备份的时间是2012-12-01,
将数据库换成备份文件的数据(记得先将目前数据库再备份起来,以免丢失其它数据),再找出 binlog记录的sql,从2012-12-01 到 2012-12-12 这个时间段的,去掉删除的sql,然后执行其余的sql。

 

二、关于binlog的一些操作


mysql 命令行
show variables like 'log_bin%'; #查看是否开启binlog日志
select @@basedir; #查看当前目录
show variables like '%datadir%'; #查看binlog存放日志文件目录

show binlog events; #只查看第一个binlog文件的内容
show binlog events in 'log-bin.000002'; #查看指定binlog文件的内容
show binary logs; #获取binlog文件列表
show master status; #查看当前正在写入的binlog文件


如果没有开启,在数据库目录下,找到my.ini文件,在文件最后添加
#log文件生成的目录
log-bin=D:\anzhuang\MySQL Server 5.5\data\log\log-bin
#日志保留天数
expire_logs_days=7

如果是这样设置,log文件会生成在这
#C:\ProgramData\MySQL\MySQL Server 5.5\data
log-bin=mysql-bin
expire_logs_days=7

然后重启mysql,用管理员身份打开cmd窗口,
关闭,net stop mysql
启动,net start mysql


将log文件转成文本文件,:
将文件丢到/bin目录下,确保在bin目录下有mysqlbinlog.exe 没有的话搜索下载
cmd窗口运行,
mysqlbinlog log-bin.000001 >D:/test1.txt
查看log文件:
mysqlbinlog log-bin.000001


(ps:查看某个时间点的logbin,需要在有mysqlbinlog.exe的目录下执行。在win系统上,要给目录加上引号,要不然会因为空格查询不到目录。)
mysqlbinlog --no-defaults --database=test --start-datetime="2021-08-10 09:00:00" --stop-datetime="2021-11-13 20:00:00" "D:\anzhuang\MySQL Server 5.5"\data\log\log-bin.000002 |more

将数据写入到指定文件中。
mysqlbinlog --no-defaults --database=test --start-datetime="2021-08-10 09:00:00" --stop-datetime="2021-11-13 20:00:00" "D:\anzhuang\MySQL Server 5.5"\data\log\log-bin.000002 > D:test2.sql

还可以过滤数据,过滤出只针对某个表的,(下面这个命令是用于Linux系统的)
mysqlbinlog --no-defaults --database=test --start-datetime="2012-11-12 09:00:00" --stop-datetime="2012-11-13 20:00:00" /data/mysql/mysql-bin.000015 | grep user_info > test.txt


数据库备份有多种,这里不展开了。(PS:我自己测试使用navicat备份的)

posted @ 2021-08-14 09:07  math_lin  阅读(330)  评论(0)    收藏  举报