【mysql】基于binlog数据恢复指令和坑

文章目录

  • 1.binlog相关配置
    • 是否开启binlog
    • binlog日志格式
  • 2.导出binlog日志
    • mysqlbinlog指令
      • update
      • insert
      • delete
      • binlog中的事件
  • 3.数据恢复
  • 4.特别注意的坑
    • 为什么bash脚本执行mysqlbinlog,无法找到指令
    • 为什么执行mysqlbinlog,无法数据恢复

1.binlog相关配置

binlog会记录mysql的增、删、改操作,通过binlog可以实现数据恢复、数据备份。


是否开启binlog

show  variables like '%log_bin%';#查询是否开启binlog,mysql8默认开启

在这里插入图片描述
binlog.index是binlog索引目录,记录生成的binlog日志,日志内容在,对应的binlog下,通过后缀区分。
在这里插入图片描述


binlog日志格式

show global variables like '%binlog_format%';#查询binlog格式,必须是row格式

在这里插入图片描述

2.导出binlog日志

可以通过mysqlbinlog指令,对binlog进行操作,通常我们使用这个指令将binlog导出为文本或sql。

mysqlbinlog指令

# 使用 mysqlbinlog 增量备份数据库
mysqlbinlog -v --start-datetime="2023-12-04 21:40:00" --stop-datetime="2023-12-05 00:00:00" $log_path --base64-output=decode-rows > $backup_file
# 使用 mysqlbinlog 增量备份数据库通过position
mysqlbinlog -v --start-position=258879782 --stop-position=258880137 $log_path --base64-output=decode-rows > $backup_file
  • -v :用于显示伪sql语句
  • -datetime:时间条件
  • -position:位置条件
  • $log_path:binlog日志所在的绝对路径(根据实际情况修改)
  • –base64-output=decode-rows:将Base64编码的输出解码为可读的格式
  • $backup_file:输出内容位置(根据实际情况修改)

update

在这里插入图片描述

打开输出的binlog,可以看到伪sql,通过这些我们可以找到想要的日志和操作。

insert

在这里插入图片描述

delete

在这里插入图片描述


binlog中的事件

在binlog中,begin和commit对应事务的开始和提交

在这里插入图片描述

show BINLOG EVENTS in 'binlog.000037';#显示binlog中的事件

在这里插入图片描述
完整的一条update操作(delete、insert类似)
在这里插入图片描述

3.数据恢复

在binlog中找到对应需要恢复的日志,就可以进行数据恢复
数据恢复需要从,begin位置开始,到commit位置,注意区分,是使用End_log_pos这个作为起始
在这里插入图片描述例如,在原有数据为
在这里插入图片描述

然后,update,某一个字段
在这里插入图片描述
现在想要回到,之前的数据,那么可以查询binlog,找到刚刚update的,上一条日志
在这里插入图片描述
找到错误操作的,上一条事务操作,使用begin到commit的End_log_pos作为条件,那么恢复指令为:

mysqlbinlog  --no-defaults --start-position=267706997 --stop-position=267707266 binlog.000037 | mysql -uroot -p123456

填写对应的start和end位置,在后面加上账号密码,执行,发现数据已经恢复
在这里插入图片描述

4.特别注意的坑

为什么bash脚本执行mysqlbinlog,无法找到指令

需要使用mysqlbinlog的绝对地址

 whereis mysqlbinlog # 获取绝对地址

在这里插入图片描述
改为:

/usr/local/mysql/bin/mysqlbinlog  --no-defaults --start-position=267705701 --stop-position=267705953 binlog.000037 | mysql -uroot -p

为什么执行mysqlbinlog,无法数据恢复

mysqlbinlog恢复数据,需要使用同一表的,pos信息进行恢复,如果跨表操作,可以通过查看伪sql进行辅助恢复

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/197618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nodejs+vue+微信小程序+python+PHP就业求职招聘信息平台的设计与实现-计算机毕业设计推荐

主要有前端和后端,前端显示整个网站的信息,后端主要对前端和网站的基本信息进行管理。用户端模块主要是系统中普通用户在注册、登录系统可以看到自己的基本信息,维护自己的信息;管理员端模块主要是管理员登录后对整个系统相关操作…

【Vue】使用 Vue CLI 脚手架创建 Vue 项目(使用GUI创建)

前言 在开始使用Vue进行开发之前,我们需要先创建一个Vue项目。Vue CLI(Command Line Interface)是一个官方提供的脚手架工具,可以帮助我们快速创建Vue项目。Vue CLI也提供了一个可视化的GUI界面来创建和管理Vue项目。 步骤 打开终…

微信小程序uni.chooseImage()无效解决方案

Bug场景: 微信小程序在上传图片时可以通过 uni.chooseImage()方案进行上传,这里不再赘述具体参数。一直项目都可以正常使用,突然有一天发现无法使用该方法,于是查了一下,发现是用户隐私协议问题。故记录一下解决方案。…

JVM Optimization Learning(五)

一、JVM Optimization 1、G1 G1官网说明:Garbage First Garbage Collector Tuning The Garbage First Garbage Collector (G1 GC) is the low-pause, server-style generational garbage collector for Java HotSpot VM. The G1 GC uses concurrent and paralle…

Java 基础学习(五)面向对象编程-对象和类

1 类和对象 1.1 面向对象概述 1.1.1面向对象简史 面向对象编程思想最初的起源可以追溯到1960年的Simula语言,这被认为是第一个支持面向对象编程概念的语言。Simula引入了类、对象、继承等概念,将数据和操作进行封装。Simula的创始人奥利-约翰达尔&…

思维模型 投射效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。将自身想法投射于他人。 1 投射效应的应用 1.1 生活中常见的投射效应 自我投射:一个人在工作中表现出色,他可能会认为其他人也应该像他一样努力工作,并…

2023.12.1 --数据仓库之 拉链表

目录 什么是拉链表 为什么要做拉链表? 没使用拉链表: 使用了拉链表: 题中订单拉链表的形成过程 实现语句 什么是拉链表 拉链表是缓慢渐变维的一种解决方案. 拉链表,记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始…

Vue--第五天

路由实操 1.抽离路由: 代码修改部分: router,存放index.js: import Find from ../views/Find import My from ../views/My //import Friend from ../views/Friend //修改成绝对路径 //一般推荐是下面的这种写法,有利于书写和…

VSCode 配置JavaScript环境

首先下载node.js,我的电脑是Windows10版本 之后安装node 在这里插入图片描述 安装成功 如果发现运行的时候还是报错,则添加环境变量试试 在Windows10版本的搜索框,搜索环境变量,点击 D:\Program Files\nodejs\ %NODE_HOME…

互联网Java工程师面试题·Spring Boot篇·第一弹

目录 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Sprin…

掌控安全 -- POST 注入

POST注入第一题 既然是POST注入,那么再用GET传参的方式就不能用了 万能密码登录一下试试 这里显示成功登录,然后就可以知道登录框这里存在注入,也就是可以构造sql语句进行注入,然后就是正常的注入手法了。 or 11 order by 1# 这…

ArkUI组件--Text组件

1.声明Text组件并设置文本内容 Text(content?:string|Recource) #两种数据类型,字符串和本地资源文件 ①string格式,直接填写文本内容 Text(需要显示的文本) ②Recource格式,读取本地资源文件 Text($r(app.string.width_label)) 读取图…

WPS项目编号(序号)无法继续前一列表

问题:在编写文档中,序号无法继续前一列表,序号之间无法自动连接。 解决方法:使用格式刷。格式刷是复制格式的操作,可以用于选中已有格式的单元格,复制到需要设置格式的单元格。 参考文章:在wps…

戴森发布全新Airstrait吹风直发器,美发科技品类再添力作

——利用气流,吹干的同时拉直头发,无需热夹板,头发无热损伤 (2023年11月30日,上海)戴森今日重磅发布全新美发造型产品——戴森Airstrait™吹风直发器,作为戴森美发科技品类的又一创新力作&…

Debian Linux安装配置ibus rime中文输入法

Linux安装配置Rime 安装 清除所有fcitx软件包 sudo apt purge fcitx*安装ibus和ibus-rime sudo apt install ibus ibus-rime启用输入法 找到输入法配置 启用ibus输入法 此时由于刚安装完毕ibus并没有启动 要么重启系统 要么输入下面的命令 ibus-daemon -drx找到ibus首选…

边缘计算网关构建智慧楼宇新生态,打造未来建筑管理

边缘计算网关在无人值守环境中的应用十分广泛,尤其在智慧楼宇管理方面发挥着重要作用。它能够实现多个地点多楼宇之间的数据实时互通,通过边缘计算网关物联网应用构建智慧楼宇生态系统,解决传统楼宇管理网络布线、人员巡检以及后期运维等问题…

Leetcode—409.最长回文串【简单】

2023每日刷题(四十八) Leetcode—409.最长回文串 强烈吐槽!!! 非常不理解,同样的代码,为什么C跑不了C就跑得了,力扣编译器是对C语言有歧视吗???…

什么是网站?

这篇文章是我学习网站开发,阶段性总结出来的。可以帮助你 通俗易懂 地更加深刻理解网站的这个玩意。 一,网站和网页的区别? 网站是由一个个网页组成。我们在浏览器上面看到的每一个页面就是网页,这些 相关的 网页组成一个网站。…

数据库系统概论期末经典大题讲解(用关系代数进行查询)

今天也是结束的最为密集的考试周,在分析过程中自己也有些许解题的感悟,在此分享出来,希望能帮到大家期末取得好成绩。 一.专门的关系运算 1.选择(σ) 选择操作符用于从关系中选择满足特定条件的元组 例如,…