在没有备份情况下,MySQL数据库、表以及数据被删除等误操作后的找回

在没有备份情况下,MySQL数据库、表以及数据被删除,等误操作后的找回

昨天发现网站不能访问,查看数据库居然被删除了,还发现多了一个数据库PLEASE_READ_ME_VVV,而且还有一些信息垃圾信息

里面写着:

To recover your lost Database and avoid leaking it: Send us 0.03 Bitcoin (BTC) to our Bitcoin address 1McksxpysJGSG9a9zHvan5f8Y1nfpDbVYF and contact us by Email with your Server IP or Domain name and a Proof of Payment. Your Database is downloaded and backed up on our servers. Backups that we have right now: *. Any email without your server IP Address or Domain Name and a Proof of Payment together will be ignored. If we dont receive your payment in the next 10 Days, we will make your database public or use them otherwise.

翻译过来就是:

要恢复丢失的数据库并避免泄漏:请将0.03比特币(BTC)发送到我们的比特币地址1Mcksxpysjgsg9a9zhvan5f8y1nfpdbvyf,并通过电子邮件与您的服务器IP或域名和付款证明联系。您的数据库已下载并备份到我们的 服务器 上。我们现在拥有的备份:*。任何没有您的服务器IP地址或域名和付款证明一起的电子邮件都将被忽略。如果我们在未来10天内没有收到您的付款,我们将公开您的数据库或使用它们。

百度发现原来是遭遇了比特币勒索病毒,想到自己外网访问的密码也是123456就凉凉了!!!又不能相信搞勒索的这些人,给钱了跑路怎么办
最后还是百度找到—>如果MySQL开启了binlog,记录了用户对数据库更新的SQL语句信息可以找回数据,对数据库进行恢复的。

binlog原理:就是保存了你所有的数据库操作(从创建用户,创建数据就开始记录),相当于你重新执行了在执行drop之前所有的增删改查。

以下是我自己处理后的操作记录↓↓↓

第一步:查看自已是否打开了 mysql 的binlog

// 在MySQL查询窗口输入查询
show variables like 'log_bin%';

在这里插入图片描述
log_bin是ON说明mysql是开启了binlog。
找到了binlog的位置,在例如:C:/app/mysql-8.0.18-winx64/data/mysql-bin
在这里插入图片描述

在dos窗口输入以下指令:

// 定位文件夹路径
cd C:/app/mysql-8.0.18-winx64/data/mysql-bin//上面找出的文件夹路径

// 然后再输入
mysqlbinlog --no-defaults mysql-bin.000003//误操作的sql、操作时间、End_log_pos(重要的,后面用)

去MySQL查询窗口查到mysql-bin.000003对应的所有End_log_pos:

// MySQL查询窗口输入
show binlog events in 'mysql-bin.000003'

查到当前mysql-bin.000003对应的所有End_log_pos
在这里插入图片描述

第二步:使用binlog恢复文件

修改指令:
mysqlbinlog --no-defaults --start-position=1050 --stop-position=8966568 mysql-bin.000002 |  mysql -h 127.0.0.1 -u root -p -P 3306

参数的具体描述:
start-position=为你想恢复的起始位置的End_log_pos,一般为刚创建数据库的时候
stop-position=为误操作之前的End_log_pos,只要是操作之前就可以
mysql-bin.000002为要恢复的binlog文件
mysql -h 127.0.0.1 -u root -p -P 3306 为你的数据库地址
127.0.0.1为ip
root为用户名
3306为端口号

注意:如果有多个mysql-bin.XXX文件
例如:
mysql-bin.000001
mysql-bin.000002
mysql-bin.000003
就需要先处理000001再000002再000003,从前往后。

而且需要再操作之前记住出问题部分的End_log_pos,以防止出现处理000001时,会将000003文件更新导致无法找到出问题部分的End_log_pos

第三步:恢复完成

执行以上修改指令后,恢复过程视数据库大小时间长短不定, 处理时中间没有可视的状态,处理完就自动第二行。

发布了5 篇原创文章 · 获赞 0 · 访问量 146

猜你喜欢

转载自blog.csdn.net/qq_38077980/article/details/103912542
今日推荐