一、二进制日志简介

MySQL有不同类型的日志,其中二进制文件记录了所有对数据库的修改,如果数据库因为操作不当或其他原因丢失了数据,可以通过二进制文件恢复。

在my.ini文件中设置了log-bin,重新启动MySQL后就开启了二进制日志。数据库每次重新启动(或执行flush logs命令)后,都会生成一个新的二进制日志,如在在my.ini文件中设置了

log-bin=F:\mysqllog\logbin

则数据库第一次启动会生成logbin.000001,第二次启动会生成logbin.000002,第三次启动会生成logbin.000003,......,以此类推。

二、数据恢复实例

1. 为了便于说明,执行flush logs命令,生成一个新的二进制文件;

2. 打开bookstore数据库中的authors表,里面已经有3条数据,在里面新插入两条数据,即第4条和第5条数据;

3. 假设由于操作失误,将第4条和第5条数据删除了;

4. 这时就考虑用二进制文件恢复第4条和第5条数据了,打开二进制文件的路径,发现有很多二进制日志文件,

其中编号最大的000030是最新的,记录了前面所述的记录插入和删除操作;

5. 首先查看一下这个文件,运行以下命令将其转换成文本文件,

打开文本文件,可以看见记录下了记录的插入和删除操作。

/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#150204 20:24:10 server id 1  end_log_pos 107     Start: binlog v 4, server v 5.5.25-log created 150204 20:24:10
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
ag/SVA8BAAAAZwAAAGsAAAABAAQANS41LjI1LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
# at 107
#150204 20:25:40 server id 1  end_log_pos 180     Query    thread_id=8    exec_time=0    error_code=0
SET TIMESTAMP=1423052740/*!*/;
SET @@session.pseudo_thread_id=8/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1344274432/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\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/*!*/;
BEGIN
/*!*/;
# at 180
#150204 20:25:40 server id 1  end_log_pos 369     Query    thread_id=8    exec_time=0    error_code=0
use bookstore/*!*/;
SET TIMESTAMP=1423052740/*!*/;
INSERT INTO `bookstore`.`authors` (`author_id`, `author_last`, `author_first`, `country`) VALUES (4, 'Li', 'Si', 'China')
/*!*/;
# at 369
#150204 20:25:40 server id 1  end_log_pos 557     Query    thread_id=8    exec_time=0    error_code=0
SET TIMESTAMP=1423052740/*!*/;
INSERT INTO `bookstore`.`authors` (`author_id`, `author_last`, `author_first`, `country`) VALUES (5, 'Wang', 'Wu', 'US')
/*!*/;
# at 557
#150204 20:25:40 server id 1  end_log_pos 584     Xid = 391
COMMIT/*!*/;
# at 584
#150204 20:45:31 server id 1  end_log_pos 657     Query    thread_id=8    exec_time=0    error_code=0
SET TIMESTAMP=1423053931/*!*/;
BEGIN
/*!*/;
# at 657
#150204 20:45:31 server id 1  end_log_pos 780     Query    thread_id=8    exec_time=0    error_code=0
SET TIMESTAMP=1423053931/*!*/;
DELETE FROM `bookstore`.`authors` WHERE `author_id`='4'
/*!*/;
# at 780
#150204 20:45:31 server id 1  end_log_pos 903     Query    thread_id=8    exec_time=0    error_code=0
SET TIMESTAMP=1423053931/*!*/;
DELETE FROM `bookstore`.`authors` WHERE `author_id`='5'
/*!*/;
# at 903
#150204 20:45:31 server id 1  end_log_pos 930     Xid = 407
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

6. 开始恢复数据,执行以下命令,

之所以要有一个--stop-pos=584参数,是因为从584开始,就在删除记录了,所以在584就应该停止。执行命令以后,再次打开authors表,可以看见第4、5条数据被恢复了!

转载于:https://www.cnblogs.com/mstk/p/4273246.html

MySQL使用二进制日志恢复数据库相关推荐

  1. mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据

    经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...

  2. mysql 恢复 二进制,mysql通过二进制日志恢复数据库

    一.打开主配置文件 添加以下参数 [root@db1 ~]# vim /etc/my.cnf server_id=6   # 服务id log_bin=/data/binlog/mysql-bin # ...

  3. mysql使用二进制日志恢复数据

    本文来说下如何使用mysql使用二进制日志恢复数据,再window的环境下. 文章目录 开启二进制日志 重启mysql服务 配置信息 开启二进制日志 在mysqld的配置节点下添加如下配置 log_b ...

  4. 4、MySQL使用二进制日志还原数据库

    二进制日志中记录了用户对数据库更改的所有操作,如 INSERT 语句.UPDATE 语句.CREATE 语句等.如果数据库因为操作不当或其它原因丢失了数据,可以通过二进制日志来查看在一定时间段内用户的 ...

  5. mysql 刷新二进制日志_使用binlog日志恢复MySQL数据库删除数据的方法

    binlog日志简介: binlog 就是binary log,二进制日志文件,这个文件记录了MySQL所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间. b ...

  6. mysql 二进制日志恢复

    mysql开启二进制日志记录文件 # Binary Logging. log-bin=/data0/mysql/mybinlog.log sync_binlog=1 innodb_support_xa ...

  7. MySQL之Xtrabackup备份恢复数据库

    一.Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbac ...

  8. Mysql基于binlog日志恢复数据

    Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的 ...

  9. MySQL之二进制日志

    文章目录 MySQL之二进制日志 1.二进制日志介绍 2.二进制日志作用 3.二进制日志文件讲解 4.二进制日志记录格式 5.查看二进制日志 6.删除二进制文件 7.演示(查看二进制日志) 8.演示( ...

最新文章

  1. 在新基建风口上,华为“鲲鹏”这次要翱翔了
  2. 中台是个什么鬼 | 白话中台战略
  3. DL之CNN:计算机视觉之卷积神经网络算法的简介(经典架构/论文)、CNN优化技术、调参学习实践、CNN经典结构及其演化、案例应用之详细攻略
  4. IOS之使用纯代码push ViewController
  5. 身于“乱世”,我们程序员应该如何打算?
  6. 百度seo排名点击器_SEO整站优化思路 - 百度seo排名点击
  7. java赋值运算符_11.Java赋值运算符
  8. Ubuntu 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
  9. 秩和比RSR法算法C语言,秩和比法(用秩和比法计算权重时怎样编秩?)
  10. 动态爱心(C/C++)
  11. W25Q64内部结构
  12. 富士施乐Fuji Xerox DocuCentre-III C6500 驱动
  13. 步态识别技术与ReID技术
  14. 移动互联网之路——Axure RP 8.0网站与APP原型设计从入门到精通
  15. 微信电子驾驶证怎么查询
  16. 蜜蜂科技Bee+创始人贾凡、OFO创始人戴威入选高山大学2018级名单
  17. 大数据带来了哪些改变
  18. 第2章第6节:使用Slider滑杆在指定的范围内选择一个数值 [SwiftUI快速入门到实战]
  19. 一文带你了解Room数据库
  20. 【C/C++】基础概念

热门文章

  1. 导出Oracle数据库用户Procedure和Function为文本文件的小工具
  2. 上海哪个图书馆营业时间最长
  3. intellij选择困难症Spring Batch/Data JPA/Integration/MVC/Security/Web Flow/Web Services到底选哪个?
  4. superset可视化-deck.gl Scatterplot与MapBox
  5. 传递函数尾1法和首1法及具体举例+H(s)与H(z)在书中出现的目的
  6. Hbase的shell出现wrong number of arguments xxx以及undefined method any?for xxxx
  7. xfce4截图的快捷键设置
  8. js回调函数的理解(轉)
  9. 获取png格式的MNIST数据集
  10. 07_QueueWithTwoStacks