查看log-bin是否开启:
mysql> show variables like '%log%bin%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin                         | ON    |
| log_bin_trust_function_creators | OFF   |
| sql_log_bin                     | ON    |
+---------------------------------+-------+
3 rows in set (0.00 sec)

用sakila数据库测试:
mysql> use sakila;
Database changed

查看表内容:
mysql> select * from yoon;
+----+------+
| id | name |
+----+------+
|  1 | yoon |
|  7 | aaa  |
+----+------+
2 rows in set (0.00 sec)

查看日志信息:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000025 |      932 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql> drop table yoon;
Query OK, 0 rows affected (0.00 sec)

刷新日志:
mysql> flush logs;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from yoon;
ERROR 1146 (42S02): Table 'sakila.yoon' doesn't exist

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000026 |      107 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

[root@yoon data]# ls
ibdata1  ib_logfile0  ib_logfile2  mysql-bin.000025  mysql-bin.index     rocover.sql  test
ibdata2  ib_logfile1  mysql        mysql-bin.000026  performance_schema  sakila

[root@yoon data]# mysqlbinlog mysql-bin.000025 | grep --ignore-case DROP -A3 -B4
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
DROP TABLE `yoon` /* generated by server */
/*!*/;
# at 215
#150814  3:34:55 server id 360360  end_log_pos 379      Query   thread_id=1     exec_time=3215  error_code=0
--
COMMIT/*!*/;
# at 932
#150814  4:42:00 server id 360360  end_log_pos 1040     Query   thread_id=1     exec_time=0     error_code=0
SET TIMESTAMP=1439541720/*!*/;
DROP TABLE `yoon` /* generated by server */
/*!*/;
# at 1040
#150814  4:42:10 server id 360360  end_log_pos 1083     Rotate to mysql-bin.000026  pos: 4

mysql> select from_unixtime('1439541720');
+-----------------------------+
| from_unixtime('1439541720') |
+-----------------------------+
| 2015-08-14 04:42:00         |
+-----------------------------+
1 row in set (0.00 sec)

###如果从上次备份刷新binlog,到发现表被删掉的过程中产生了多个binlog,则要按照binlog产生的顺序,
那么恢复的次序应该是按照binglog的产生的序号,从小到大依次恢复###

[root@yoon data]# mysqlbinlog -d sakila --stop-datetime='2015-08-14 04:42:00' mysql-bin.000025 > recover_sakila.sql

[root@yoon data]# mysql -uroot -p < recover_sakila.sql 
Enter password:

mysql> select * from yoon;
+----+------+
| id | name |
+----+------+
|  1 | yoon |
|  7 | aaa  |
+----+------+
2 rows in set (0.00 sec)

过滤方法:(因为测试中只有一个表,而生产环境中就会有多张表)
[root@yoon data]# more recover_sakila.sql | grep --ignore-case -E 'insert|update|select|delete' -A2 -B2 | grep yoon

如果表名包含yoon_log,yoon_order,只想导出yoon表的话,+个-w
[root@yoon data]# more recover_sakila.sql | grep --ignore-case -E 'insert' -A2 -B2 | grep -w yoon > yoon.sql
insert into yoon(name) values ('yoon')
insert into yoon(name) values ('aaa')

[root@yoon data]# more recover_sakila.sql | grep --ignore-case -E 'create' -A2 -B2 | grep yoon                           
create table yoon (id int(11) unsigned NOT NULL AUTO_INCREMENT,name varchar(20),PRIMARY KEY (`id`))

用sed可导出所有语句不会截断:

sed -n "/insert into yoon/,/;/p" yoon.sql |sed 's#\/\*!\*\/##'

MySQL通过Binlog恢复删除的表的更多相关文章

  1. mysql通过binlog恢复删除数据

    删除误操作有时会意外出现,如果你有备份表数据的好习惯,那么至少你可以追回备份前的那些数据.如果我们打开了mysql的binlog,那么可以通过它的增量操作日志来恢复数据.怎么打开binlog前篇已有说 ...

  2. mysql 开启binlog日志,恢复误删的表、数据、mysql库

    linux下开启mysql的binlog日志功能 1.配置mysql配置文件my.cnf(内容如下). #配置文件储存的位置log-bin=mysql-bin#5.7以及以上版本需要配置这一行(保证唯 ...

  3. 【转】【MySQL】mysql 通过bin-log恢复数据方法详解

    mysql中bin-log在mysql默认状态下是没有打开的,我们要先打开mysql 开启bin-log功能,然后再通过备份的bin-log进行数据库恢复了. 具体的操作是通过mysqlbinlog这 ...

  4. 解说mysql之binlog日志以及利用binlog日志恢复数据

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...

  5. 不小心删除数据--利用MySQL的binlog恢复数据

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...

  6. 【MySQL】binlog缓存的问题和性能

    之前在没有备库的情况下,遇到过more than 'max_binlog_cache_size' bytes of storage 的错误,今天在主备复制的时候又遇到了这个问题 Last_SQL_Er ...

  7. SQL注入实验,PHP连接数据库,Mysql查看binlog,PreparedStatement,mysqli, PDO

    看到有人说了判断能否sql注入的方法: 简单的在参数后边加一个单引号,就可以快速判断是否可以进行SQL注入,这个百试百灵,如果有漏洞的话,一般会报错. 下面内容参考了这两篇文章 http://blog ...

  8. mysql对binlog的处理

    --mysql对binlog的处理 ------------------------2014/05/28 Binlog是mysql以二进制形式打印的日志,它默认不加密,不压缩.每个正常的binlog文 ...

  9. MySQL基于binlog主从复制

    MySQL复制介绍 默认情况 下复制是异步进行的,从库也不需要一直连接到主库来同步数据 MySQL复制的数据粒度可以是主实例上所有的数据库,也可以是指定的一个或多个数据库 ,也可以是一个数据库里的指定 ...

随机推荐

  1. about tomcat ssl

    http://www.kuqin.com/shuoit/20140615/340573.html 1SSL单向认证概念 当客户端(服务请求方)向服务端(服务提供方)发起请求时,服务器端需要向客户端提供 ...

  2. 使你的 Google Summer of Code 建议被接收的5个技巧

    本文翻译自:http://www.di.ens.fr/~baghdadi/TXT_blog/5_advices_to_get_your_proposal_accepted.lyx.html 本文讲的主 ...

  3. ubuntu server 系统,更换阿里云源(用户更新源)

    Ubuntu安装完毕后,默认使用的是官方的源,在国内访问速度很慢,这里介绍更换为阿里云的源方法. 步骤如下: 1.备份源配置文件 sudo cp /etc/apt/sources.list /etc/ ...

  4. 自定义按钮设置BadgeNumber

    TabbarButton.h @interface TabbarButton : UIButton @property (nonatomic, strong) UIButton *badgeValue ...

  5. VB.NET 小程序 2

    Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ...

  6. 六.CSS浮动与清除

    浮动 把元素从常规文档流中取出.是元素脱离常规文档流 浮动的作用: ①实现文本绕排图片效果 ②让原本在上下方向上堆叠的块级元素可以变成左右并列,从而实现多栏布局 文本绕排图片 首先HTML代码如下 & ...

  7. MySQL写入插入数据优化配置

    *innodb_buffer_pool_size 如果用Innodb,那么这是一个重要变量.相对于MyISAM来说,Innodb对于buffer size更敏感.MySIAM可能对于大数据量使用默认的 ...

  8. Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected.

    今天在WCF项目里使用DataContract序列化接口参数的时候,报了这个错,错误详细信息如下: System.ServiceModel.CommunicationException: There ...

  9. 项目中重新引用WCF报错

    今天在一个项目里,重新更新WCF引用的时候,居然报错了,提示根本找不到那个WCF接口,我赶紧跑去新建了一个空项目,试着用相同的地址引用一下,发现是可以的,完全ok 既然是虚惊一场,那就得想办法把这个W ...

  10. [SQL]SUTFF内置函数的用法 (删除指定长度的字符并在指定的起始点插入另一组字符)

    STUFF 删除指定长度的字符并在指定的起始点插入另一组字符. 语法 STUFF ( character_expression , start , length , character_express ...