同事在开发时,使用正式数据库测试功能,不小心误删了数据库中的一条数据。幸好数据库有开启Binlog(为了做主从复制),Binlog记录了数据库执行的每条SQL语句,抱着死马当活马医的心态,利用Binlog看能不能找回误删的数据。
数据大概是在14:20左右删除的,首先利用mysqlbinlog命令导出那段时间的日志,执行下面的命令:
mysqlbinlog --start-datetime="2017-10-13 14:15:00" --stop-datetime="2017-10-13 14:25:00" mysql_bin.xxxxxx > data.sql
将14:15至14:25的日志记录导出到data.sql文件中,打开data.sql文件,查找定位到被删除数据的表:
如上图就是一条SQL语句的执行记录,其中黄色字体部分就是实际执行的SQL语句,语句经过BASE64编码,可以使用-v参数,让mysqlbinlog将执行的语句通过注释的方式显示出来,再使用-base64-output=decode-rows参数让mysqlbinlog把看不懂的BASE64编码隐藏起来,最后执行的命令变成这样:
mysqlbinlog --base64-output=decode-rows -v --start-datetime="2017-10-13 14:15:00" --stop-datetime="2017-10-13 14:25:00" mysql_bin.xxxxxx > data.sql
打开data.sql文件,查找定位到被删除数据的表:
可以看到执行的删除语句了,而且日志还帮我们把被删除记录的每个字段值都记录下来了,只要复制这些字段的值,就可以恢复被删除的记录了!
上篇:
MySQL事务、存储过程、视图、自定义函数、触发器、事件的简单使用及理解
下篇:
CentOS7yum安装Mysql多实例,并搭建Mycat
1 从 0 到 1:使用 Loki + Promtail + Grafana 搭建日... 2 Unsloth:大模型微调的革命性工具,支持DeepSeek QwQ Gemma... 3 一文图解Agent智能体:60张图、14个技术点回顾Agent的基本认知 4 SFT 指令微调数据 如何构建? 5 快速对QWen2.5大模型进行微调 6 DeepseekR1+ollama+dify1.0.0搭建企业/个人知识库 7 使用Easy Dataset为大模型准备训练数据,在线部署 8 Kubernetes集群日志-使用Loki实现高效日志分析和查询 9 携程PB级数据基础平台2.0建设,多机房架构下的演进 10 用LLaMA-Factory,训练一个你的专属大模型!超简单易懂教程 11 一文搞懂AI关键术语:LLM、RAG、Prompt、Embedding等 12 AI大模型中 .safetensors 文件、.ckpt文件、.gguf和.pt...