文章目录[隐藏]
前言:养成好习惯 每日备份数据
记一次删库之旅
(准确的来说是覆盖了半年前的备份,感觉比删库还坑)
一不小心(手贱)覆盖了半年前备份的数据库,而且主要用户数据都是在这半年间的;
找回之旅
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 日志
这不是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()