前提
数据库有全备和开启binlog日志
误操作之后
线上的话,先锁库
FLUSH TABLES WITH READ LOCK;
导入之前的全备
mysql -uroot -p < /home/mysql_3.24.sql
binlog日志操作
取出最后一个或者两个,视情况而定(我的是48结尾的这个)
mysqlbinlog mysql-bin.000048 > /home/48.sql
剔除关键语句
删掉drop等关键SQL语句
sed -i '/^drop.*/d' /home/48.sql
然后导入增量这些数据
mysql -uroot -p < /home/48.sql
解锁数据库
UNLOCK TABLES;
总结
1.每个数据库配置都有差异,看数据量大小,一般发生误操作之后,需要恢复的就是最后一个binlog文件
2.可以代替锁库操作的是利用iptables