Mysql从删库到跑路

1、开启bin-log

打开mysql配置文件 /etc/mysql/my.cnf(这个位置不是固定的,根据你安装的mysql目录去找)
放开log_bin这一行

log_bin                 = /var/log/mysql/mysql-bin.log

随后重启mysql  即执行

/etc/init.d/mysql restart

进入数据库,查看log_bin开启状态

show variables like ‘%log_bin%’;

图片

可以看到 log_bin的值是ON就表示已经开启了log-bin
再到/var/log/mysql/目录下查看,就已经多了两个log-bin日志文件

mysql-bin.000001
mysql-bin.index

为什么是两个呢?
我们打开mysql-bin.index文件后看到只有一行数据:

/var/log/mysql/mysql-bin.000001

什么意思呢?也即是mysql-bin.index这个文件最终指向了mysql-bin.000001文件。

2、创建数据库表并插入数据

1DROP TABLE IF EXISTS `xoxo`;
2CREATE TABLE `xoxo` (
3  `stuname` varchar(10) DEFAULT NULL
4) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5
6INSERT INTO `xoxo` VALUES ('tom');
7INSERT INTO `xoxo` VALUES ('lilei');
8INSERT INTO `xoxo` VALUES ('jimGreen');

3、删库跑路

drop table xoxo;

如果此时没有对数据库做备份,且没有开启binlog,删完库基本就只能坐那哭了。不哭也行,那就是——撒丫子赶紧跑路~

撒丫子跑鸭

 

4、恢复数据:

先查看应该从哪里恢复。

执行命令

/usr/bin/mysqlbinlog –no-defaults  mysql-bin.000001 |more

我们可以看到每一次针对数据库的操作节点。

# at 833
# at 934
# at 961

我们注意到在删除数据库表的下一个节点是961,那我们恢复数据时的终止节点也需要选这个

恢复:

/usr/bin/mysqlbinlog –no-defaults  mysql-bin.000001 –stop-position=’961’|mysql -uroot -pfulianzhuren

再进入数据库看看,数据全部都恢复啦。

 

欢迎关注微信公众号「Golang知识局

 

 

 


版权声明:本文为javahuazaili原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。