MySQL使用bin-log将数据恢复到某个时间点
binlog的三种模式
- statement:记录每一条修改数据的sql
- row:保存哪条记录被修改
- mixed:兼顾前两者的优点。
# 查看binlog有没有开启
SHOW VARIABLES LIKE 'log_bin%';
# 查看当前binlog的模式
SHOW VARIABLES LIKE 'binlog%';
在配置文件中添加一行:binlog_format="ROW",即可设置成row模式,其他模式同理
-- 查看当前是在哪个日志文件中
SHOW MASTER STATUS;
# 截断日志文件,重新定向到新的日志文件中
# 每次操作binlog恢复前,都需要执行下此命令,能够保证之前的日志文件不会再有新的日志在到这个文件中,影响恢复。
FLUSH LOGS;
# 查询出这些日志文件保存的路径
show variables like '%datadir%';
# get所有的操作记录
SHOW BINLOG EVENTS IN 'mysql-bin.000001';
cd /var/lib/mysql
# get这个binlog文件所有的操作记录, 有详细时间
mysqlbinlog --no-defaults mysql-bin.000001
# get某个区间的操作记录
mysqlbinlog --no-defaults --start-position=120 --stop-position=220226 mysql-bin.000001
# 在后面加管道符|mysql -uroot -p,用这个区间的操作记录去恢复到数据库
mysqlbinlog --no-defaults --start-position=120 --stop-position=220226 mysql-bin.000001 ||mysql -uroot -p
mysqlbinlog --stop-datetime="2022-2-26 20:17:33" mysql-bin.000001 |mysql -uroot -p
mysqlbinlog --start-datetime="2022-2-25 20:17:00" --stop-datetime="2022-2-26 20:17:33" mysql-bin.0000* |mysql -uroot -p
注意事项
- 每次重启mysql服务都会创建一个新的binlog文件
FLUSH LOGS;也会创建一个新的binlog- 恢复之前建议
FLUSH LOGS;生成一个新的binlog,把恢复操作都写到新的binlog中。 - 恢复的过程中可能遇到主键冲突,可能是有binlog记录了mysql的一些自带数据的创建,应该找好恢复的开始位置,别把mysql数据的创建记录也恢复了。
- 去找这些binlog,以自己数据库的创建position开始,一个个binlog去恢复,直到最近被删除前的位置。
- 建议以位置position或者整个binglog文件恢复。当然也可以
mysql-bin.0000*匹配所有binlog然后指定--start-datetime和--stop-datetime去恢复。 - position的选取,取
SHOW BINLOG EVENTS IN 'mysql-bin.000001';结果的End_log_pos列的值。
清空binlog
先用navicat导出一份数据,
删除数据库,
然后清空binlog文件
cd /var/lib/mysql
rm -f mysql-bin.0000*
:> mysql-bin.index
重启mysql
systemctl restart mysql
用navicat导入数据,
查看binlog日志
SHOW BINLOG EVENTS IN 'mysql-bin.000001';
生成新的binlog
FLUSH LOGS;
MySQL使用bin-log将数据恢复到某个时间点的更多相关文章
- MySQL通过bin log日志恢复数据|手撕MySQL|对线面试官
关注微信公众号[程序员白泽],进入白泽的知识分享星球 前言 作为<手撕MySQL>系列的第二篇文章,今天介绍一下MySQL的二进制日志(bin log),注意不要和MySQL的InnoDB ...
- 转-->>mysql的bin log
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日 ...
- 谈谈MySQL bin log的写入机制、以及线上的参数是如何配置的
目录 一.binlog 的高速缓存 二.刷盘机制 三.推荐的策略 推荐阅读 问个问题吧!为什么你需要了解binlog的落盘机制呢? 我来回答一下: 上一篇文章提到了生产环境中你可以使用binlog ...
- mysql之 redo log
重做日志(redo log) 前言:之前一直弄不清楚 mysql 里面 bin log 和 innodb log 文件的区别,在脑子里面一直有个疑问 binlog 日志文件已经可以用来进行数据库的日志 ...
- MySQL日志系统bin log、redo log和undo log
MySQL日志系统bin log.redo log和undo log 今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...
- 深入学习MySQL 02 日志系统:bin log,redo log,undo log
上一篇文章中,我们了解了一条查询语句的执行过程,按理说这篇应该讲一条更新语句的执行过程,但这个过程比较复杂,涉及到了好几个日志与事物,所以先梳理一下3个重要的日志,bin log(归档日志).redo ...
- MySql 关闭 bin 和 log 日志
mysql 的 bin 和 .log 日志文件会非常占用磁盘空间和 IO,修改 mysql 配置文件可以关闭这两种日志的记录. 关闭 bin 日志,将下面三项配置注释掉: #log_bin = mys ...
- mysql数据库误删除后的数据恢复操作说明
在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...
- redo log和bin log
讲redolog和binlog之前,先要讲一下一条mysql语句的执行过程. 1.client的写请求到达连接器,连接器负责管理连接.验证权限: 2.然后是分析器,负责复习语法,如果这条语句有执行过, ...
- 转-MySQL 数据库误删除后的数据恢复操作说明
在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...
随机推荐
- wpf treeview 绑定图标方式
<TreeView Grid.Row="0" Grid.Column="0" x:Name="foldersItem" Selecte ...
- sublime 设置快捷键
Tools-> Developer-> New Snippet 打开后保存文件要是以 .sublime-snippet 做结尾 <snippet> <content> ...
- C语言经典100例【1、2】
[1]三位数字重组问题 题目:有 1.2.3.4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 分析:分别把1,2,3,4放在个位.十位和百位,用嵌套循环即可解决.注意要求无重复数字 ...
- python将知识图谱的节点关系(CSV或其他格式)转换成Echarts所需的json格式
python将知识图谱的节点关系(CSV或其他格式)转换成Echarts所需的json格式 前言: 1. 此代码以如下(CSV)格式的数据为例, 故事 时间 地点 人物 xx 2020 安徽合肥 小戈 ...
- Nginx+Tomcat 负载均衡配置
一.问题引入: Nginx+Tomcat 是目前主流的java web架构,如何让 nginx+tomcat 同时工作呢,也可以说如何使用 nginx 来反向代理 tomcat 后端均衡呢? 二.JA ...
- allure安装成功后,执行未生成报告解决
在搜索了很多方法尝试后,执行依然没有生成测试报告,在尝试在pycharm里面修改配置解决了: file>setting>tools>Python integrated tools&g ...
- Python中变量和对象的关系
变量和对象 Python中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象.而变量是对象的一个引用(也可以称为标签或者名字),对象的操作都是通过引用来完成的. 例如,[]是一个空列 ...
- 实现一个网页同时调用多个倒计时 jquery/js
最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js2 var plugJs={ stamp:0, tid:1, stam ...
- PAT-basic-1024 科学计数法 java
一.题目 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该 ...
- Java基础——(综合练习)买飞机票和找素数
package com.zhao.test; import java.util.Scanner; public class Test14 { /* 需求:机票价格按照淡季旺季.头等舱和经济舱收费. 输 ...