MySQL使用二进制日志恢复数据库
一、二进制日志简介
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使用二进制日志恢复数据库相关推荐
- mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据
经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...
- mysql 恢复 二进制,mysql通过二进制日志恢复数据库
一.打开主配置文件 添加以下参数 [root@db1 ~]# vim /etc/my.cnf server_id=6 # 服务id log_bin=/data/binlog/mysql-bin # ...
- mysql使用二进制日志恢复数据
本文来说下如何使用mysql使用二进制日志恢复数据,再window的环境下. 文章目录 开启二进制日志 重启mysql服务 配置信息 开启二进制日志 在mysqld的配置节点下添加如下配置 log_b ...
- 4、MySQL使用二进制日志还原数据库
二进制日志中记录了用户对数据库更改的所有操作,如 INSERT 语句.UPDATE 语句.CREATE 语句等.如果数据库因为操作不当或其它原因丢失了数据,可以通过二进制日志来查看在一定时间段内用户的 ...
- mysql 刷新二进制日志_使用binlog日志恢复MySQL数据库删除数据的方法
binlog日志简介: binlog 就是binary log,二进制日志文件,这个文件记录了MySQL所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间. b ...
- mysql 二进制日志恢复
mysql开启二进制日志记录文件 # Binary Logging. log-bin=/data0/mysql/mybinlog.log sync_binlog=1 innodb_support_xa ...
- MySQL之Xtrabackup备份恢复数据库
一.Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbac ...
- Mysql基于binlog日志恢复数据
Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的 ...
- MySQL之二进制日志
文章目录 MySQL之二进制日志 1.二进制日志介绍 2.二进制日志作用 3.二进制日志文件讲解 4.二进制日志记录格式 5.查看二进制日志 6.删除二进制文件 7.演示(查看二进制日志) 8.演示( ...
最新文章
- 在新基建风口上,华为“鲲鹏”这次要翱翔了
- 中台是个什么鬼 | 白话中台战略
- DL之CNN:计算机视觉之卷积神经网络算法的简介(经典架构/论文)、CNN优化技术、调参学习实践、CNN经典结构及其演化、案例应用之详细攻略
- IOS之使用纯代码push ViewController
- 身于“乱世”,我们程序员应该如何打算?
- 百度seo排名点击器_SEO整站优化思路 - 百度seo排名点击
- java赋值运算符_11.Java赋值运算符
- Ubuntu 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
- 秩和比RSR法算法C语言,秩和比法(用秩和比法计算权重时怎样编秩?)
- 动态爱心(C/C++)
- W25Q64内部结构
- 富士施乐Fuji Xerox DocuCentre-III C6500 驱动
- 步态识别技术与ReID技术
- 移动互联网之路——Axure RP 8.0网站与APP原型设计从入门到精通
- 微信电子驾驶证怎么查询
- 蜜蜂科技Bee+创始人贾凡、OFO创始人戴威入选高山大学2018级名单
- 大数据带来了哪些改变
- 第2章第6节:使用Slider滑杆在指定的范围内选择一个数值 [SwiftUI快速入门到实战]
- 一文带你了解Room数据库
- 【C/C++】基础概念
热门文章
- 导出Oracle数据库用户Procedure和Function为文本文件的小工具
- 上海哪个图书馆营业时间最长
- intellij选择困难症Spring Batch/Data JPA/Integration/MVC/Security/Web Flow/Web Services到底选哪个?
- superset可视化-deck.gl Scatterplot与MapBox
- 传递函数尾1法和首1法及具体举例+H(s)与H(z)在书中出现的目的
- Hbase的shell出现wrong number of arguments xxx以及undefined method any?for xxxx
- xfce4截图的快捷键设置
- js回调函数的理解(轉)
- 获取png格式的MNIST数据集
- 07_QueueWithTwoStacks