MySQL误删表数据,如何快速恢复丢失的数据?

第一步:登录数据库

cd /www/server/mysql/bin
mysql -u root -p

第二步:查看binlog日志是否打开

show variables like 'log_%';

 查看下binlog日志列表
binlog日志文件目录在 /www/server/data目录下

 show master logs;

 

下载生成sql文件

/www/server/mysql/bin/mysqlbinlog --base64-output=decode-rows -v  --start-datetime="2024-11-24 20:20:33" --stop-datetime="2024-11-24 22:30:05" /www/server/data/mysql-bin.000006 > /www/01.sql

 

红框1:数据库mysqlbinlog地址
红框2:转换格式
红框3:起点时间
红框4:终点时间
红框5:上面操作日志文件

 

mysqlbinlog 命令的语法格式:
mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名
 
--------------------------------------------------------
常用参数选项解释:
--start-position=875 起始pos点
--stop-position=954 结束pos点
--start-datetime="2016-9-25 22:01:08" 起始时间点
--stop-datetime="2019-9-25 22:09:46" 结束时间点
--database=zyyshop 指定只恢复zyyshop数据库(一台主机上往往有多个数据库,只限本地log日志)
-------------------------------------------------------- 
不常用选项: 
-u --user=name 连接到远程主机的用户名
-p --password[=name] 连接到远程主机的密码
-h --host=name 从远程主机上获取binlog日志
--read-from-remote-server 从某个MySQL服务器上读取binlog日志

 

执行完成后再www目录下有对于保存的文件01.sql,下载到本地;用sumlime编辑器打开

搜索对于的表,找到操作记录

 复制到navicat执行语句即可

 (注:可以用navicat导出线上残缺数据库,仅结构导出),在本地数据库新建一个与线上一样名称的数据库,直接执行下载到本地的01.sql(保存这个数据库文件需要设置结束时间为误操作之前的时间点,这样可以得到某个时间点之前的数据,数据可能不完整,再核对用navicat执行语句处理)

posted @ 2024-11-25 16:25  zhang_you_wu  阅读(28)  评论(0编辑  收藏  举报