阿里云mysql数据库恢复总结,mysql binlog日志解析

由于意外。。阿里云mysql中有一张表被全部删除了,深吸三口气候,开始解决。

首先用凌晨的自动备份的,进行全量恢复,然后找binlog日志(见下文),查找从全量备份到数据删除之间的记录

这导致了一个问题,为了恢复那一张表,其他的表的数据也回滚到了凌晨备份的事后。。。

由于当时比较紧张,而且时间有限,所以考虑不周,事后总结:

应该在数据库实例中新建一个新的临时库,将备份恢复到临时库中,然后在临时库导出被误删的表的数据,然后再将数据导入到正式的数据库中对应表中。

最后再从binlog日志文件中只寻找删除的表,从凌晨到删除这几个小时之间的数据。

 

数据丢失对任意一个网站来说都是灾难性的,在开发过程中,update和delete操作一定要跟上条件,而且条件中坚决杜绝出现类似where 1=1  恒等的情况,以免后面的and条件因为逻辑或者外星人入侵等问题没有组装上,从而导致悲剧产生。

 

 

mysql binlog3种格式,row,mixed,statement. 解析工作

mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000144 |more

 

--base64-output=DECODE-ROWS: 会显示出row模式带来的sql变更。

-v :显示statement模式带来的sql语句

 

outous-MacBook-Pro:bin user$ ./mysqlbinlog --base64-output=DECODE-ROWS -v /Users/dir/mysql-bin.000186 > /Users/dir/log.txt
outous-MacBook-Pro:bin user$ pwd

/usr/local/mysql/bin

 

posted on 2014-12-25 13:46  walter371  阅读(4277)  评论(0编辑  收藏  举报

导航