详解:如何恢复MySQL数据库下误删的数据
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,2017-03-27 09:25 阅读 178 评论 0作者:马哥Linux运维-Robin血的教训,事发经过就不详述了。直接上操作步骤及恢复思路(友情提示:数据库的任何操作都要提前做好备份),以下是
千家信息网最后更新 2025年11月07日详解:如何恢复MySQL数据库下误删的数据2017-03-27 09:25 阅读 178 评论 0
2017-03-27 09:25 阅读 178 评论 0
作者:马哥Linux运维-Robin
血的教训,事发经过就不详述了。直接上操作步骤及恢复思路(友情提示:数据库的任何操作都要提前做好备份),以下是Mysql数据后的恢复过程:
1. 找到binlog
恢复数据的前提是必须开启Mysql的binlog日志,如果binlog日志没开启,请忽略此篇文档。binlog日志是否开启可以查看Mysql配置文件。日志位置一般在/var/lib/mysql目录或者编译安装的date目录下。也可登录Mysql用命令查看。
# cat /etc/my.cnflog_bin=mysql-bin# mysql -uroot -pEnter password:mysql> show variables like'log_bin%';+---------------------------------+--------------------------------------------------+| Variable_name | Value |+---------------------------------+--------------------------------------------------+| log_bin | ON || log_bin_basename | /home/programs/mysql-5.6.26/data/mysql-bin || log_bin_index | /home/programs/mysql-5.6.26/data/mysql-bin.index || log_bin_trust_function_creators | OFF || log_bin_use_v1_row_events | OFF |+---------------------------------+--------------------------------------------------+5 rows in set (0.00 sec)# ll /home/programs/mysql-5.6.26/data/mysql-bin*-rw-rw---- 1 mysql mysql 343629748 Oct 13 22:09 /home/programs/mysql-5.6.26/data/mysql-bin.000001-rw-rw---- 1 mysql mysql 19 Sep 23 17:11 /home/programs/mysql-5.6.26/data/mysql-bin.index
如果有多个binlog日志也可以在Mysql命令行下查看当前binlog、切割binlog日志。切割完成binlog再次查看就会看到新的日志写入到新的binlog文件中。
mysql> show master status;+------------------+-----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+-----------+--------------+------------------+-------------------+| mysql-bin.000001 | 343629748 | | | |+------------------+-----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> flush logs;Query OK, 0 rows affected (0.01 sec)
2. 找到binlog中错误的语句
可以binlog日志中找到错误语句执行的时间点,分别恢复错误语句前后的binlog日志为sql。也可以跳过此步,直接恢复整个binlog日志为sql,然后打开sql文件,删除错误语句。
# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids mysql-bin.000001 | grep --ignore-case -A3 -B4 '错误的sql语句'
3. 恢复binlog日志
通过mysqlbinlog命令直接恢复binlog日志为sql脚本,可以指定开始和结束时间。如果从上次备份(建议备份的同时刷新binlog日志)截至到恢复时间产生多个binlog日志,按从小到大的顺序分别导出成sql再顺序导入到数据库。
# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids --start-datetime '2016-10-11 15:22:53' mysql-bin.000001 > /home/stack/data.sql
上面命令中用-d ids指定要恢复数据库,如果要恢复表级别的数据,导出成sql后再进行过滤grep即可。
# more data.sql | grep --ignore-case -E 'insert|update|delete' | grep table
4. 恢复到数据库
恢复数据时,可能会有重复数据的报错,建议用-f参数忽略。
# mysql -uroot -p -f ids < data.sql
日志
数据
语句
错误
数据库
命令
备份
文件
时间
多个
建议
目录
顺序
从小到大
中用
从小
位置
作者
再次
前提
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库原理与技术中的粒度
华为服务器网卡型号
新世界收不到服务器
网络安全都转行了
江西网络安全法答题
泰国服务器租用vps
网络安全幼儿手指操
软件开发计划简称
共建网络安全共享网络生活
2021年浪潮服务器
海伦市幻城市网络技术软件商店
防骗数据库平台
博雅数据库广东2021高考预估
特种网络技术价目表
计算机网络技术教材谁的好
软件开发说明书的目的及意义
砀山软件开发项目管理
万利家庭游戏机提示数据库错误
霸心网络技术
木瓜互联网科技素材图片治愈
宝山区项目软件开发定制要求
上海姓付的软件开发老板
戴尔服务器可以玩cs吗
农安智能网络技术诚信服务
网络安全建设的大学
软件开发环境需求
网络安全绘画的设置说明
软件开发造价汇总表
淘宝助理 数据库
安卓vpn服务器