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执行语句处理)