详解:如何恢复MySQL数据库下误删的数据
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,2017-03-27 09:25 阅读 178 评论 0作者:马哥Linux运维-Robin血的教训,事发经过就不详述了。直接上操作步骤及恢复思路(友情提示:数据库的任何操作都要提前做好备份),以下是
千家信息网最后更新 2026年11月01日详解:如何恢复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安全错误
数据库的锁怎样保障安全
咖啡豆
广东猪兼强互联网科技有限公司
上海卓越科技互联网
上海挚品互联网科技
期待互联网科技
丰台科技园 互联网
菲比寻常互联网科技
深圳期待互联网科技
佰商互联网科技有限公司
深圳前海聚择互联网科技有限公司
福州新华互联网科技学校 知乎
移动互联网科技股
国大互联网教育科技有限公司工作
乌鲁木齐新华智原互联网科技学校
内蒙古九一互联网科技
群盈汇互联网科技有限公司
普陀区互联网教育科技管理办法
中国新注册互联网科技
科技信息时代互联网发展
互联网科技对化妆品行业
浩特互联网科技
壹账通互联网科技
互联网科技咨询
华脉科技工业互联网产品
富国互联网科技创新基金
赶超互联网科技 微信多开
皮皮虾互联网科技有限公司
张召忠谈中国互联网科技
陕西九四连强互联网科技有限公司
好易买互联网科技