MySQL数据库中怎么恢复误删除数据

本篇文章为大家展示了MySQL数据库中怎么恢复误删除数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1. 找到binlog

恢复数据的前提是必须开启MysqLbinlog日志,如果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

上述内容就是MysqL数据库中怎么恢复误删除数据,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程之家行业资讯频道。

相关文章

这篇文章主要介绍“hive和mysql的区别是什么”,在日常操作中...
这篇“MySQL数据库如何改名”文章的知识点大部分人都不太理解...
这篇文章主要介绍“mysql版本查询命令是什么”的相关知识,小...
本篇内容介绍了“mysql怎么修改字段的内容”的有关知识,在实...
这篇文章主要讲解了“mysql怎么删除unique约束”,文中的讲解...
今天小编给大家分享一下mysql怎么查询不为空的字段的相关知识...