记一次Linux服务器 误删数据的恢复操作

今天把自己的一个服务器的数据 误操作删除了一个重要的数据表,心想,嗯,真特么的想扇自己个耳光,哈哈哈

好,事不宜迟,进入正文

事情是这样的。我执行了TRUNCATE操作,导致表清空了,那么静下心来想

所有线上服务器,数据库一定要每天凌晨定一个时间段进行备份,不然后果真的会很严重

好了,正文继续

1.先查找binlog

命令行输入 

mysql -uroot -p

进入mysql命令行后输入

show master status

这里能看到有一个binlog文件了,那么我们下面接下来的操作都是跟这个文件有关的,但是这个作为原始文件,不能执行,因为线上服务器随时都会产生新数据,会改变binlog文件,所以我们应该copy一份出来  那么不知道这个文件在哪里怎么办呢?这时候find命令就非常有用了,这时候就不要在mysql命令行里操作了

find / -type f -name mysql-bin.000005

2.备份binlog文件,以便恢复数据操作使用

这样我们就能找到我们这个log文件的位置 然后我们复制一份到根目录下,方便后续操作

cp /www/server/data/mysql-bin.000005 ~/

根据自己的路径操作就好,然后我们就得到这个备份的文件了

这里插一个自己的小插曲,之前是想直接操作binlog文件,把错误节点的那句  TRUNCATE语句删除,然后重新导入这份binlog去恢复的,但是发现这个问题

就提示第一行的问题,这个很明显是提示我编码格式的问题,然后前前后后折腾了1个小时去尝试解决这个问题,发现都没用,后来想我可以使用binlog命令导出一份sql文件去操作,应该就能解决,所以我的第三部是

3.binlog文件导出成一份sql文件

mysqlbinlog /www/server/mysql/mysql-bin.000005 > ~/005.sql

通过这个命令导出一份sql文件到根目录,这时候我们回到mysql命令行,输入

show binlog events\G

这时候就能看到我们最后操作的节点了然后打开刚刚导出的005.sql文件我们把27722后面的操作都删除掉,重新保存一下

4.恢复数据到数据库

最好是建立一个新的数据库来恢复备份的数据,然后新库跟旧库做一个同步,以免新数据被覆盖,但是这是因为这是我自己的服务器,我是关闭了网站操作的,所以数据都是比较固定,不怕出问题,接下来进入mysql命令行  输入

source ~/005.sql

然后一堆神奇的sql代码过后,在查看数据库 发现,咦!数据回来了!

数据库恢复数据是万不得已的操作,所以每次删数据清空数据库的时候最好都是先备份一份再操作,还有一定每天都要备份一份数据库数据,以免造成不必要的损失

最后写这份博客更多的是提醒自己不要再误操作,不备份数据库了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值