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

