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数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...
随机推荐
- rclone挂载对象存储到本地
一.原理图 二.挂载步骤 1.申请对象存储资源 (略) 2.下载rclone https://rclone.org/downloads/ 3.上传服务器,解压并安装 sudo unzip rclone ...
- 卡片式UI设计详细指南,先收好这8条!
今天为大家分享的是「卡片设计」. 卡片是产品中常见的设计组件之一.通过卡片,可以将不同的内容分层次组合在一起.卡片式设计自带简约和易用的属性,能让页面看起来更有秩序感. 卡片作为常用的UI组件,通常由 ...
- Navie UI
开发文档 一个 Vue 3 组件库, 它比较完整,主题可调,用 TypeScript 写的,快.
- 在C++创建动态数组
计算首行两数相加 #include <iostream>11 #include <vector> using namespace std; int main() { vecto ...
- ORihard KCU116E: 经济实惠的 100Gbps 网络和存储 FPGA 开发平台
ORihard KCU116E: 经济实惠的 100Gbps 网络和存储 FPGA 开发平台 ORihard KCU116E: 经济实惠的 100Gbps 网络和存储 FPGA 开发平台 Kint ...
- QSlider CSS样式
QSlider::groove:horizontal{ border:0px; height:15px; background:#deffe5; } QSlider::sub-page:horizon ...
- 小程序toast组件中事件触发条件
微信小程序toast组件是一种消息提示框.例如当文章条数全部加载出来后,用户再次点击加载更多的时候,js判断文章条数全部加载出来后,便让toast组件弹出提示用户"没有更多文章了" ...
- VUE中如何使用MOCK
安装mockjs npm install mockjs 可以使用数据模板生成模拟数据. Mock.mock( rurl?, rtype?, template ) ) // 或者 Mock.mock( ...
- DDD(一)微服务、领域驱动设计、领域模型
DDD(一)微服务.领域驱动设计.领域模型 如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样) 什么是微服务 单体结构项目 优点:结 ...
- idea引入ojdbc包报错
网上下载或者让同事传两个jar过来,ojdbc6-11.2.0.7.0.jar 以及jconn3.0.jar 放入同一个文件夹中: 在此文件夹中cmd如下:回车,进入cmd控制台. 输入如下两个命令: ...