宝塔误删mysql数据如何恢复?(救命题)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

mysql二进制日志恢复

(有很多朋友私信求帮助恢复数据库,可以加微信备注添加原因,如果能帮助解决问题,给点辛苦费就行(●'◡'●))

有一个朋友,在工作中,复制网上的代码,错误的把"delete from table"当成了 "select from table",结果删除了大量数据表内容。

那么如何避免被项目经理杀了祭天呢?

宝塔面板的mysql自动开启了binlog功能~ 也就是说我们可以直接通过binlog方式恢复宝塔误删的数据。

1、检查mysqlbinlog日志功能,图中返回 NO代表开启,OFF代表未开启

    mysql> show variables like 'log_%'; 
    +----------------------------------------+---------------------------------------+
    | Variable_name                          | Value                                 |
    +----------------------------------------+---------------------------------------+
    | log_bin                                | ON                                    | ------> ON表示已经开启binlog日志
    | log_bin_basename                       | /usr/local/mysql/data/mysql-bin       |
    | log_bin_index                          | /usr/local/mysql/data/mysql-bin.index |
    | log_bin_trust_function_creators        | OFF                                   |
    | log_bin_use_v1_row_events              | OFF                                   |
    | log_error                              | /usr/local/mysql/data/martin.err      |
    | log_output                             | FILE                                  |
    | log_queries_not_using_indexes          | OFF                                   |
    | log_slave_updates                      | OFF                                   |
    | log_slow_admin_statements              | OFF                                   |
    | log_slow_slave_statements              | OFF                                   |
    | log_throttle_queries_not_using_indexes | 0                                     |
    | log_warnings                           | 1                                     |
    +----------------------------------------+---------------------------------------+

2、找到宝塔面板的/www/server/data文件夹,找到mysql-bin.xxxxx之类的文件

因为网站本身有定时备份,时间在2022/04/12,数据删除时间在2022/04/22 下午17点。

丢失了10天的数据,找回命令

3、在宝塔终端或者ssh中root权限下,使用命令:

/www/server/mysql/bin/mysqlbinlog --start-datetime="2022-04-12 01:30:01" --stop-datetime="2022-04-22 18:30:01" /www/server/data/mysql-bin.00* > redata.sql

如果你的网站没有数据备份可以不写开始时间,只写结束时间
 

/www/server/mysql/bin/mysqlbinlog --stop-datetime="2022-04-22 18:30:01" /www/server/data/mysql-bin.00* > redata.sql

运行上面的命令后进入root目录下查看是否出现了redata.sql文件,该文件大小应该远大于删掉的数据库大小,假如没有生成该文件或者该文件过小,那么尝试下面这条命令(博主用了没成功,不知原因)

/www/server/mysql/bin/mysqlbinlog --base64-output=DECODE-ROWS -v -d 数据库名 /www/server/data/mysql-bin.0000* > redata.sql

这条命令不再设置时间点,而是完全按照文件恢复,数据库名换成删掉的数据库名,假如不记得了,去网站文件config或者其他数据库配置文件查看,宝塔默认数据库和网站文件夹同名,点换成下横线。

运行该命令后进入root目录下查看是否出现了redata.sql文件。

4、假如有了redate.sql文件,在数据库中新建数据库,数据库名最好和删掉的数据库同名,然后执行下面的命令:

mysql -uroot -p -f 新建数据库名 < redata.sql

如果不成功,使用编辑器打开redata.sql,因为文件较大,使用vscode在处理时容易崩溃,建议使用sublime对大文件编辑处理更友好。

5、将insert命令全部复制到一个新的insert.sql文件中

 快捷键ctrl+l,选中当前行,复制到insert.sql中,仔细对比新添加的数据是否正确。

同样的办法将update和delete命令分别复制到update.sql和delete.sql中。

6、将复制出的三个sql文件导入本地数据库,检查是否是错误删除的数据。

注意在命令后加分号 ;

检查数据正确后传到线上版本。

如果数据恢复了请给这篇博客点个赞或者点个关注

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值