MySQL根据binlog恢复数据

简介

本文介绍了使用mysqlbinlog导出数据,根据binlog恢复数据,和导出数据时报需要super权限的解决方法。

环境

MySQL: 5.7.40

说明

MySQL的binlog是数据库服务器在运行过程中产生的日志文件,记录了数据库增删改的操作,可用于恢复和故障排错,在使用binlog前,请确保mysql启用了binlog

正文

一、排查并查找binlog的日志的存储位置

在mysql中执行以下命令检查mysql是否启用binlog,若为 “ ON ” 则为开启,“ OFF ” 为未开启 

show variables like 'log_bin'

开启binlog日志,Linux中找my.cnf文件,默认在 “ /etc/my.cnf ” 路径下,Windows找my.ini文件,默认在安装目录下,我们是linux中,如下图

“ log-bin ” 配置了路径就代表开启了binlog日志,mysql-bin的默认路径为/var/lib/mysql/目录下

“ innodb_data_home_dir = /www/server/data ”,这个是和innodb相关的数据的存储路径,也是mysql的数据主目录,我们的binlog日志文件就在这个下面

二、查找mysqlbinlog命令存储位置

“ mysqlbinlog ” 命令的位置在安装目录的bin文件夹下,我们需要用此命令才能打开binlog

使用以下命令查看mysql安装位置 

which mysql

切换到/usr/bin/文件夹下使用“ ll ”查看mysql指向的文件夹,如下图

“ mysqlbinlog ”命令存储位置 /www/server/mysql/bin/


下面进入主题

一、为方便排查,我们导出文件sql文件

/www/server/mysql/bin/mysqlbinlog  
--database=xx --start-datetime="2023-11-23 19:00" 
--stop-datetime="2023-11-24 14:12"  
www/serser/data/mysql-bin.000022 > /root/000022.sql

说明:导出xx数据库,时间起点:2023-11-23 19:00,时间结束点:2023-11-24 14:12 的mysql-bin.000022的binlog日志转成000022.sql文件并存储到root目录下

还可以根据位置点的方式来导出,这种导出最精确

/www/server/mysql/bin/mysqlbinlog  
--database=xx --start-position=55079756
--stop-position=55081588
www/serser/data/mysql-bin.000022 > /root/000022.sql

注意:如果执行导出时发现报错需要super权限

you need (at least one of) the SUPER privilege(s) for this operation

解决办法,先查看登录数据库的账户权限

select user,Super_priv from mysql.user;

赋予super权限

update mysql.user set Super_priv='Y' where user='test_db_user';

刷新权限

flush privileges;

然后即可执行导出命令

打开下载到window后的000022.sql文件 

我们恢复的方式就是找到错误操作的数据然后执行对应的sql进行还原,也可以根据位置点或时间区间还原,但一定要确保还原后的数据是正确的,特别要小心仔细别写错了

举个例子:

一、根据位置区间或时间区间批量恢复,以下恢复以位置区间为例

/www/server/mysql/bin/mysqlbinlog --start-position=55079756 --stop-position=55081557 --database=xx /www/server/data/mysql-bin.000022|mysql -u用户名 -p密码 -v 数据库名

解释:恢复数据库=xx,位置起始点=55079756,结束点=55079757 区间内的数据,-v 表示执行此命令,执行后的截图我就不发了,就是一条sql下面一条set

二、手动恢复

通过上图我们发现在23-11-24 14:34:26秒,删除了ID为184的acc_business_bills数据,那我们就需要找到并执行acc_business_bills表的ID=184的这条数据的新增sql进行还原通过  

 

我们发现这条数据是在 23-11-24 12:19:56秒创建的,因此复制下来执行就还原了

注意:一定要确保这条sql在删除前是没有进行更新的(继续排查binlog,排查时间段就是 “ 23-11-24 12:19:56 至 23-11-24 14:34:26 ” 这个时间区间),否则新增后的数据也是不正确的

 

完成 

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

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

相关文章

重排链表,剑指offerII 26,力扣 120

目录 力扣题目地址: 题目: 那我们直接看题解吧: 解题方法: 难度分析: 审题目事例提示: 解题分析: 解题思路: 解题补充: 力扣题目地址: 143. 重排链表 - 力扣&…

基于Django+Tensorflow卷积神经网络鸟类识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介系统概述系统功能核心技术系统架构系统优势 二、功能三、系统四. 总结  总结 一项目简介 介绍一个基于DjangoTensorflow卷积神经网络鸟类识别系统是一个非…

多目标水母搜索算法(MOJS)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、多目标水母搜索算法MOJS 多目标水母搜索算法(Multi-Objective Jellyfish Search algorithm,MOJS)由Jui-Sheng Chou等…

Verilog 入门(一)(Verilog 简介)

文章目录 什么是 Verilog HDL?Verilog 主要能力模块时延数据流描述方式 什么是 Verilog HDL? Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和…

景联文科技加入中国人工智能产业联盟(AIIA)数据委员会

近日,景联文科技加入中国人工智能产业联盟(AIIA)数据委员会,成为委员会成员单位。 中国人工智能产业发展联盟(简称AIIA)是在国家发改委、科技部、工信部、网信办指导下,由中国信息通信研究院等单…

基于springboot家具商城系统

基于springboot家具商城系统 摘要 这个Spring Boot家具商城系统旨在通过现代化的Web应用程序技术提供一个全功能的电子商务平台。系统的核心实体是家具商品,通过RESTful API控制器提供对商品的增删改查等操作。这个系统使用了Spring Boot框架,借助其简便…

Mac单独修改应用语言

方法1: 方法2: defaults write com.microsoft.Excel AppleLanguages ("zh-cn") defaults write com.microsoft.Word AppleLanguages ("zh-cn")参考:https://www.zhihu.com/question/24976020

红队攻防实战系列一之Cobalt Strike

他日若遂凌云志,敢笑黄巢不丈夫 本文首发于先知社区,原创作者即是本人 前言 在红队攻防中,需要我们拥有综合能力,不仅仅是web渗透的漏洞挖掘与利用,边界突破的方式有很多种,当然这需要我们拥有很强的意识…

【LeetCode】101. 对称二叉树

101. 对称二叉树 难度:简单 题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出&#…

图书管理系统源码,图书管理系统开发,图书借阅系统源码配置和运行图解源码已附加

目录 配置简介和软件条件 数据库附件配置 vs应用程序web.config配置数据库链接字符串 数据库文件脚本代码 配置简介和软件条件 所需要的软件是Vs2017以上数据库是Sqlserver2012以上,如果数据库附件不了可以使用数据库脚本附件数据库脚本会在文章末尾写出来。可以…

ArkTS-页面转场动画

页面转场动画 在全局pageTransition方法内配置页面入场和页面退场时的自定义转场动效 两个页面间发生跳转,一个页面消失,另一个页面出现,这时可以配置各自页面的页面转场参数实现自定义的页面转场效果。页面转场效果写在pageTransition函数中…

【Python】获取ip

要使用Python获取IP地址,可以使用socket库中的gethostname()函数和gethostbyname()函数。 import socketdef get_ip_address():hostname socket.gethostname()ip_address socket.gethostbyname(hostname)return ip_addressip get_ip_address() print("IP地…

【BUG合集】(一)①数据库存1/0,请求结果返回true和false;②sql查数据库能查,但mybatis查为空;③data64图片存储为异常;

前言 最近,在工作上接手的任务中,各种 bug 问题出现,在解决的同时也可以记录一下。因此,觉得可以出个记录 bug 合集。方便后来者碰到类似情况,可以作为一个参考进行解决。 文章题目就包含当前文章内容中所遇到的三个 b…

用行云管家实现IT统一运维管理,提高运维效率

随着公司业务的不断壮大,需要用到的IT系统也越来越多,使用起来耗时耗力。因此实现IT统一运维管理已成为提高运维效率、降低成本、优化资源配置的重要途径。这里我们小编告诉您,用行云管家实现IT统一运维管理,提高运维效率&#xf…

目标检测——R-CNN算法解读

论文:Rich feature hierarchies for accurate object detection and semantic segmentation 作者:Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik 链接:https://arxiv.org/abs/1311.2524 代码:http://www.cs.berke…

高度自定义进度条实现完整代码附示意图

实现功能&#xff1a; 自定义一个进度条&#xff0c;能手动拖动进度条&#xff0c;也可以点击相应的进度&#xff0c;根据当前进度条的进度显示相应的内容。 效果图&#xff1a; 实现代码&#xff1a; 封装组件&#xff1a; <template><view class"boomBg&qu…

AIoT智能物联网平台技术架构参考

具体来说&#xff0c;AIoT平台能够实现智能终端设备之间、不同系统平台之间、不同应用场景之间的互融互通&#xff0c;进一步推动万物互联的进程。 AIoT智能物联网平台是结合了人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;技术的平台。它旨在通过物…

达梦数据库使用

达梦数据库使用 &#x1f4d1;前言 本文主要是【达梦数据库】——达梦数据库简单使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他…

【Web】NodeJs相关例题wp

目录 ①[GKCTF 2020]ez三剑客-easynode ②[MoeCTF 2021]fake game ③[安洵杯 2020]Validator ④ [HZNUCTF 2023 final]eznode ⑤[CNSS] &#x1f3ed; EzPollution_pre ⑥[CNSS]✴️ EzPollution ①[GKCTF 2020]ez三剑客-easynode const express require(express); co…

如何缓解可观察性挑战?

可观察性正在成为当代 DevOps 实践的基石。即使传统上不属于 DevOps 的部门也看到了在可观察性团队的支持下带来的好处。然而&#xff0c;到 2023 年&#xff0c;组织发现采用之路比预期更加崎岖。以下是 DevOps 团队在可观察性方面面临的七个最大挑战以及一些缓解这些挑战的建…