记一次删库跑路!哈哈哈

2018年八月二号,是黑暗的一天,在今天我碰到一个MySQL的坑,让我无心间删掉了整个表的数据,当时我心如死灰,感受凉凉了!可是片刻之间我就立立刻报该问题,运维立马停掉服务,(为何停掉服务?脑袋想想就明白了),我问问运维有没有备份,运维说备份是夜里两点备份的,用备份数据的话今天上午的新增的数据也是没有的,因而我立刻用命令  show veriables like 'log_%'; 查看是否已开启日志,谢天谢地mysql开启了binlog,因而今天记录一下误删库利用binlog回滚的具体操做!mysql

一、重中之重,误删库以后应该立马停掉服务,而且通知开发人员不要继续往数据库里面写东西,一面日志过大覆盖掉咱们须要回滚的日志;git

二、我立刻根据 show veriables like 'log_%';这个命令定位到binlog的位置,找到最近的log;github

三、binlog是二进制文件 vi vim cat 都不能直接查看到咱们想看的东西,咱们要是用mysql自带的工具查看,命令:sql

/usr/local/mysql/bin/mysqlbinlog --base64-output="decode-rows" -v /var/log/mysql/mysql-bin.000021

输出的日志使咱们能看到的sql语句数据库

四、接下来我按照 https://github.com/danfengcao/binlog2sql 这个连接的步骤,一步步将delete掉的数据都回滚成了insert语句vim

在按照上面这个连接作的时候,bin-log的位置因为权限不够,mysql没法从新启动,报错:(Starting MySQL.The server quit without updating PID file (/usr/local/mysql/data/mysql/izwz96bvf2t3
0nuubf3qbez.pid).)解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data”  而后从新启动mysqld!运维

这是一次宝贵的经验,此记录只是记录下具体的删库后怎么回滚的思路,剩余的操做须要看到的朋友动手去试一试!工具

相关文章
相关标签/搜索