1.修改配置文件

vi /etc/my.cnf

log-bin = binlog

systemctl restart mysqld

mysql -uroot -p123456

mysql> show variables like 'log_bin' ;

mysql> show VARIABLES like '%log_bin%';

ls /var/lib/mysql/

2.创建数据库

create database mytest;

use mytest;
create table t(a int PRIMARY key)ENGINE = INNODB DEFAULT CHARSET=utf8; flush logs; mysqlbinlog --no-defaults /var/lib/mysql/binlog.

[root@localhost ~]# ls /var/lib/mysql/

数据创建日志和记录日志

3.插入数据

use mytest;
insert into t select union all select union all select ;
flush logs;

数据插入日志记录

5.删除数据库

drop database mytest;
flush logs;

删除记录日志

6.恢复数据

mysqlbinlog --no-defaults /var/lib/mysql/binlog. /var/lib/mysql/binlog. | mysql -uroot -p123456

数据恢复成功

二. 按时间点恢复数据

create table t2(a int PRIMARY key)ENGINE=INNODB default CHARSET=utf8;

insert into t2 values(),(),(),(),();
删除数据
delete from t2 where a < 4;
flush logs;

其中创建记录和删除记录我们要恢复到pos997

删除库mytest,回到最原始的地方

drop database mytest;

按时间恢复记录

mysqlbinlog --no-defaults --start-position="" --stop-position="997" /var/lib/mysql/binlog.  | mysql -uroot -p123456

数据恢复

mysqlbinlog --no-defaults --start-position="" --stop-position="" /var/lib/mysql/binlog.  | mysql -uroot -p123456
mysqlbinlog mysql_bin. --start-datetime='2018/04/11 15:00:45' --stop-datetime='2018/04/11 15:01:35'
mysqlbinlog mysql_bin. --start-position= --stop-position=

https://m.jb51.net/article/111404.htm

时间点恢复表里可能没数据因为多个事务时间一样

mysqlbinlog --no-defaults --stop-datetime="2019-08-29 20:47:30" /var/lib/mysql/mysql-bin-master.000003 | mysql -uroot -p123456

第一恢复提示表存在在库中删除表再恢复就正常恢复了

[root@mysql115 ~]# mysqlbinlog /var/lib/mysql/mysql-bin-master. --stop-position=   | mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR (42S01) at line : Table 't' already exists
[root@mysql115 ~]# mysqlbinlog /var/lib/mysql/mysql-bin-master. --stop-position= | mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.

drop table t;

按时间点恢复操作注意

1.表中有数据的时候 刷新日志记录 生成新的日志文件/var/lib/mysql/mysql-bin-master.000005

查看旧的bing日志 2019-08-30 16:25:46 硬化了日志

 mysqlbinlog /var/lib/mysql/mysql-bin-master. | tail -n 

删除数据库

delete from t where a=;

此时可以看到删除记录和开始记录

[root@mysql115 ~]# mysqlbinlog /var/lib/mysql/mysql-bin-master.000005 | tail -n 50

恢复数据 注意此处的binlog日志是用的 因为05这个时间是开始日志 按时间恢复 数据会是空的是不能恢复数据的

 mysqlbinlog --no-defaults --stop-datetime="2019-08-30 16:25:46" /var/lib/mysql/mysql-bin-master. | mysql -uroot -p123456

两次恢复对比

如果日志太多过滤删除记录

mysqlbinlog /var/lib/mysql/mysql-bin-master. | grep Delete_rows -C4

删除库 操作过滤

mysqlbinlog /var/lib/mysql/mysql-bin-master. | grep drop -C4

重要参考

https://www.cnblogs.com/kevingrace/p/5907254.html#4337479

https://www.cnblogs.com/kevingrace/p/5904800.html

mysql数据库通过二进制 -【恢复数据记录】的更多相关文章

  1. MySQL 查询某个数据库中所有包含数据记录的表名

    MySQL 查询某个数据库中所有包含数据记录的表名 有时根据实际应用需要,需要对数据进行备份. 如果一个数据库中有很多数据表,但是只想备份包含数据记录的那些表数据(空表不做数据备份). 如果通过如下S ...

  2. MySQL数据库如何解决大数据量存储问题

    利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...

  3. MySQL数据库使用mysqldump导出数据详解

    mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...

  4. C#实现MySQL数据库中的blob数据存储

    在MySQL数据库中,有一种blob数据类型,用来存储文件.C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll. Mysql.Data.dll(6.9.6)组件下载 ...

  5. ubuntu 下 mysql数据库的搭建 及 数据迁移

    1.mysql的安装 我是使用apt-get直接安装的 :sudo apt-get install mysql-server sudo apt-get install mysql-client 2.配 ...

  6. linux mysql 数据库操作导入导出 数据表导出导入

    linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...

  7. ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据

    ABP默认的数据库是SQLServer,不过ABP框架底层是EF框架,因此也是很容易支持其他类型的数据库的,本篇随笔介绍在ABP框架使用Mysql数据库,以及基于SQLServer创建MySql数据库 ...

  8. Mysql数据库常用的命令 数据备份 恢复 远程

    远程数据库 格式: mysql -h主机地址 -u用户名 -p用户密码数据库 mysql -h 42.51.150.68 -u yang -p discuz mysql设置密码 mysql>us ...

  9. mysql备份(导出)数据库,并恢复数据

    导出某个数据库数据到文件中 假设要导出test这个数据库,那么可以在Linux命令行(不是在mysql中) [root@ubuntu /data]# mysqldump -uroot -p test ...

随机推荐

  1. imu_tk标定算法

    IMU(惯性测量单位)是机器人中非常流行的传感器:其中,它们被用于惯性导航[1],姿态估计[2]和视觉惯性导航[3],[4],也使用 智能手机设备[5]. 机器人技术中使用的IMU通常基于MEMS(微 ...

  2. Codeforces 1136D - Nastya Is Buying Lunch - [贪心+链表+map]

    题目链接:https://codeforces.com/problemset/problem/1136/D 题意: 给出 $1 \sim n$ 的某个排列 $p$,再给出若干 $(x,y)$ 表示当序 ...

  3. 解决HTML5提出的新的元素不被IE6-8识别的解决办法

    解决HTML5提出的新的元素不被IE6-8识别的解决办法 <!--[if lt IE 9]> <script type="text/javascript" src ...

  4. Interllij IDEA中启动web项目

    1.在IDEA中打开你的Web应用,点击一下绿色三角形左边的框框,然后在弹出框上选择Edit Configurations,会弹出一个配置面板. 2.在弹出的面板中我们点击Defaults,然后找到T ...

  5. Spring Boot事务管理(中)

    在上一篇 Spring Boot事务管理(上)的基础上介绍Spring Boot事务属性和事务回滚规则 . 4 Spring Boot事务属性 什么是事务属性呢?事务属性可以理解成事务的一些基本配置, ...

  6. 20190422 T-SQL 触发器

    -- 1 数据库服务 -- 2 触发器 CREATE TRIGGER no_inserton xsAFTER INSERT ASBEGIN RAISERROR('XS不让插入数据',1,1); ROL ...

  7. GDB查看堆栈局部变量

    GDB查看堆栈局部变量 “参数从右到左入栈”,“局部变量在栈上分配空间”,听的耳朵都起茧子了.最近做项目涉及C和汇编互相调用,写代码的时候才发现没真正弄明白.自己写了个最简单的函数,用gdb跟踪了调用 ...

  8. chrome下调试安卓app 之 ionic

    打开chrome浏览器,输入chrome://inspect/#devices,将安卓手机插入电脑上,打开手机设置 打开 开发者调试usb调试 ,网页上会出现 input 点击, 就会看见consol ...

  9. C# 准确获取系统 CPU 使用率

    1.  PerformanceCounter 注意:(32位下不是线程安全的) public class ProcessorUsage { const float sampleFrequencyMil ...

  10. js实现多行文本溢出省略

    实现效果: css: position: relative; line-height: 20px; max-height: 60px; js: function overflowHiddon(el) ...