第一步:备份数据库
mysqldump -uroot -proot test-l -F > '../data/test.sql'
此条语句将当前库保存到test.sql, -F参数表示flush logs,会重置binlog文件,查看新的binlog文件可以用show master status
第二步:插入一些新的数据及删库
instert into t1 values(11111)
instert into t1 values(222222)
instert into t1 values(333333)
drop table t1
第三步:恢复sql文件数据
注:由于sql文件备份在前,所以不会产生新插入语句及删库语句
mysql -uroot -proot test < '../data/test.sql'
第四步:恢复备份后的新数据,但不恢复错误sql语句
1.先查看错误语句的end_log_pos位置,查看新的binlog文件可以用show master status
mysqlbinlog --no-defaults ../data/mysql-bin.000003
2.恢复log数据
mysqlbinlog --no-defaults --stop-position="980" ../data/mysql-bin.000003|mysql -uroot -proot test
至此,数据全部恢复至删库前。