• 8.由于垃圾评论太多,关闭网站评论功能

  • 7.暂时删除 收藏夹  -2020年7月6日20:01:09

  • 6.添加日历小工具

  • 5.工具箱做为单独页面

  • 4.工具箱新增常用工具链接

  • 3.关闭网站内链–20200626

  • 2.代码风格改为 暗色主题–20200626

     

  • 1.取消左侧菜单列表显示 –20200625

  • 网站升级为https

    2020年6月25日21:40:52

记一次删库找回之旅

learning 易天法地 4年前 (2020-05-22) 599次浏览 扫描二维码
文章目录[隐藏]

前言:养成好习惯 每日备份数据

记一次删库之旅

(准确的来说是覆盖了半年前的备份,感觉比删库还坑)
一不小心(手贱)覆盖了半年前备份的数据库,而且主要用户数据都是在这半年间的;

找回之旅

1.各种百度 mysql恢复误删数据

https://www.cnblogs.com/-mrl/p/9959365.html  

这个还没开始就已经死去了,MySQL根本就没打开binklog

2.误删除ibdata文件后MySQL数据库恢复办法

http://blog.chinaunix.net/uid-31396856-id-5819118.html

明显也不行,我这个是覆盖了数据库

3.最后无意间翻看tomcat的 stdout 日志

8d4398bbf2dc3bcc4547803597a3d8bd - 记一次删库找回之旅

这不是mysql的执行语句嘛,哈哈直接在日志里面

最终用Ultraedit 查询到所有insert语句 复制出来 执行

4.找回过程中用了python 发现真是好用的一比

复制出来的insert中文会有乱码,但是经过python处理之后发现没有乱码

附上python的代码

1.合并日志文件

(python的操作是把日志文件拷到本机上执行的)

#合并一个文件夹下的多个txt文件
#coding=utf-8
import os
#获取目标文件夹的路径
filedir = 'E:\\temp\\swyy-stdout'
#获取当前文件夹中的文件名称列表
filenames=os.listdir(filedir)
#打开当前目录下的result.txt文件,如果没有则创建
f=open('E:\\temp\\swyy-stdout.logs\\swyy-stdout.logs.txt','w')
i=0
#先遍历文件名
for filename in filenames:
    i+=1
    print(i)
    if i>0:
        filepath = filedir+'\\'+filename
        print(filepath)
        #遍历单个文件,读取行数
        for line in open(filepath,encoding='gbk', errors='ignore'):
            # print(str(line))
            f.writelines(line)
            # f.write('\n')
#关闭文件
f.close()

2.取出insert语句

import urllib 
fi = open("E:/temp/swyy-stdout.logs/swyy-stdout.logs.txt","r",encoding="gbk")
fo = open("E:/temp/swyy-stdout.logs/swyy-stdout-addUserExcel1525.txt","w",encoding="gbk")

newline = []                #创建一个新的列表


for line in fi :            #按行读入文件,此时line的type是str
    if "[mapper.UserMapper.addUserByExcel] - ==>  Preparing:" in line:     #检验是否到了要写入的内容 
        #line = urllib.parse.unquote(line)
        newline.append(line)
        print(line)
    if "[mapper.UserMapper.addUserByExcel] - ==> Parameters:" in line:
        newline.append(line)
        print(line)
newlines = list(set(newline))
strlist = "".join(newline)      #合并列表元素
newlines = str(strlist)         #list转化成str
fo.write(newlines)

fo.close()
fi.close()


本站文章如无特殊说明均为原创
文章标题: 记一次删库找回之旅
转载请注明原文链接:https://www.zylearning.top/854.html
喜欢 (4)