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

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

 

在此,楼主恬不知耻地推荐微信公众号「Python知识局」,公众号会持续发布大厂各种高薪岗位,包括但不限于Python岗位(内推哦),欢迎诸位老铁切磋交流~~。敬请微信扫描下方二维码

 

Mysql从删库到跑路_第1张图片

 

Mysql从删库到跑路_第2张图片

 

你可能感兴趣的:(mysql,binlog)