MySQL恢复误删数据

及时救你一命

##前言

今天不小心在update时写错where条件,导致表里多条记录被更新. 吓得弟弟我心砰砰跳.这时候赶紧找找怎么恢复MySQL,发现其实很容易也很靠谱..

条件

这个方法有个终极条件就是你的MySQL是否开启binlog,至于开启binlog有几个方法

1.在my.inf主配置文件中直接添加三行
1. log_bin=ON  
2. log_bin_basename=/var/lib/mysql/mysql-bin  
3. log_bin_index=/var/lib/mysql/mysql-bin.index 

第一行参数是打开binlog日志

第二行参数是binlog日志的基本文件名,后面会追加标识来表示每一个文件

第三行参数指定的是binlog文件的索引文件,这个文件管理了所有的binlog文件的目录

2.这个方法比上面简单点.不过定制化差点
log-bin=/var/lib/mysql/mysql-bin  

这一行参数的作用和上面三个的作用是相同的,mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index

注意: 如果是5.7以上版本还需要指定一个参数
server-id=12345 #自己定一个

随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了

以上方式都需要重启MySQL服务.至于怎样重启MySQL服务就靠自己来了

##实际操作

讲解: binlog实际上就是将MySQL执行的每一条语句记录下来,所以大致原理大家应该就清楚了,就是将历时语句查出来知道在你修改前这个字段的值本来是多少, 虽然不直观, 但是总算是有迹可循.

在my.cnf找到binlog保存的位置 或者通过MySQL命令找到

show variables like '%log_bin%'  

找到后就好办了.

my.cnf

binlog会按max_binlog_size expire_logs_days 两个参数来分割成多个文件, 所以要找到你