mysql数据库通过二进制 -【恢复数据记录】
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(),(),(),(),();
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数据库通过二进制 -【恢复数据记录】的更多相关文章
- MySQL 查询某个数据库中所有包含数据记录的表名
MySQL 查询某个数据库中所有包含数据记录的表名 有时根据实际应用需要,需要对数据进行备份. 如果一个数据库中有很多数据表,但是只想备份包含数据记录的那些表数据(空表不做数据备份). 如果通过如下S ...
- MySQL数据库如何解决大数据量存储问题
利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...
- MySQL数据库使用mysqldump导出数据详解
mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...
- C#实现MySQL数据库中的blob数据存储
在MySQL数据库中,有一种blob数据类型,用来存储文件.C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll. Mysql.Data.dll(6.9.6)组件下载 ...
- ubuntu 下 mysql数据库的搭建 及 数据迁移
1.mysql的安装 我是使用apt-get直接安装的 :sudo apt-get install mysql-server sudo apt-get install mysql-client 2.配 ...
- linux mysql 数据库操作导入导出 数据表导出导入
linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...
- ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
ABP默认的数据库是SQLServer,不过ABP框架底层是EF框架,因此也是很容易支持其他类型的数据库的,本篇随笔介绍在ABP框架使用Mysql数据库,以及基于SQLServer创建MySql数据库 ...
- Mysql数据库常用的命令 数据备份 恢复 远程
远程数据库 格式: mysql -h主机地址 -u用户名 -p用户密码数据库 mysql -h 42.51.150.68 -u yang -p discuz mysql设置密码 mysql>us ...
- mysql备份(导出)数据库,并恢复数据
导出某个数据库数据到文件中 假设要导出test这个数据库,那么可以在Linux命令行(不是在mysql中) [root@ubuntu /data]# mysqldump -uroot -p test ...
随机推荐
- lsass.exe占用cpu 解决方法
最终解决办法如下: RD /s /q "%USERPROFILE%\AppData\Roaming\Microsoft\Protect"
- 程序员调 Bug 的样子,非常真实
程序员调 Bug 的样子,非常真实
- 关于for循环
1.普通for循环 (遍历数组的索引值(下标),边界可以自己划定) var arr = [10, 20, 30];for(var i=0; i<arr.length; i++) console. ...
- 1、vue 笔记之 组件
1.组件个人理解: <组件>是页面的一部分,将界面切分成部分,每部分称为 <组件> 2.组件化思想: //2.1.定义一个全局的组件,组件支持‘驼峰命名 ...
- sql server自定义排序
方法一: 比如需要对SQL表中的字段NAME进行如下的排序:张三(Z)李四(L)王五(W)赵六(Z) 按照sql中的默认排序规则,根据字母顺序(a~z)排,结果为:李四 王五 赵六 张三 自定义排序 ...
- RoboWare Studio 安装
RoboWare Studio是一个ROS集成开发环境.它使 ROS开发更加直观.简单.并且易于操作.可进行ROS工作区及包的管理.代码编辑.构建及调试. 下载链接:https://pan.baidu ...
- ionic3 在ios9.0 系统下 会出现ReferenceError:Can't find variable:Intl 错误提示
ionic3 框架开发app 在ios 9.0版本中 ReferenceError:Can't find variable:Intl 错误提示: 在index.html 文件中添加 <scri ...
- Maven 编译跳过检查
Maven 编译跳过检查 使用maven打包的时候指令:clean package, 但过程可会有提示检测错误,如果想跳过检查,需加上:-Dmaven.test.skip=true 完整指令: cle ...
- windows程序设计 MessageBox消息框
MessageBox函数 int WINAPI MessageBoxW( HWND hWnd,//窗口句柄 LPCWSTR lpText,//消息框主体显示的字符串 LPCWSTR lpCaption ...
- C#构造函数、私有构造函数、静态构造函数与构造函数执行顺序
默认构造函数,如果没有为类指定任何构造函数,编译器会自动为类创建一个无参构造函数,用以初始化类的字段:如果为类编写了构造函数,那么编译器就不会再自动生成无参构造函数了.ps.C#不允许用户为结构定义无 ...