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.rhkb.cn/news/211597.html

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

相关文章

【理解ARM架构】中断处理 | CPU模式

🐱作者:一只大喵咪1201 🐱专栏:《理解ARM架构》 🔥格言:你只管努力,剩下的交给时间! 目录 🍜中断🍨GPIO中断代码实现 🍜CPU🍨CONTROL…

docker集群的详解以及超详细搭建

文章目录 一、问题引入1. 多容器位于同一主机2. 多容器位于不同主机 二、介绍三、特性四、概念1. 节点nodes2. 服务(service)和任务(task)3. 负载均衡 五、docker网络1. overlay网络 六、docker集群搭建1. 环境介绍2. 创建集群3. 集群网络4. 加入工作节点 七、部署可视化界面po…

MYSQL数据库中运行SQL文件报错

报错显示 当使用mysql数据库运行SQL文件报错时 [Err] 1273 - Unknown collation: utf8mb4_0900_ai_ci 报错原因 版本高低问题,一个是5.7版本,一个是8.0版本生成转储文件的数据库版本为8.0,要导入sql文件的数据库版本为5.7,因为是高版本导入到低版本&a…

ThermalLabel SDK for .NET 13.0.23.1113 Crack

ThermalLabel SDK for .NET 是一个 .NET 典型类库,它允许用户和开发人员创建非常创新的条码标签并将其发布在 zebra ZPL、EPL、EPSON ESC、POS 以及 Honeywell intermec 指纹中通过在 VB.NET 或 C# 上编写 .NET 纯代码来实现热敏打印机,以实现项目框架的…

通过仿真理解信道化接收机分析过程

概要 信道化从子信道带宽划分上可分为临界抽取和非临界抽取两种,从各子信道中心频率布局上可分为偶型排列和奇型排列,从处理流程上可分为信道化分析与信道化综合过程。本文主要通过仿真来理解偶型排列/临界抽取/信道化分析过程。 基本原理 常规的数字…

音频修复和增强软件iZotope RX 10 mac特点介绍

iZotope RX 10 mac是一款音频修复和增强软件,主要特点包括: 声音修复:iZotope RX 10可以去除不良噪音、杂音、吱吱声等,使音频变得更加清晰干净。 音频增强:iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限…

人工智能_机器学习053_支持向量机SVM目标函数推导_SVM条件_公式推导过程---人工智能工作笔记0093

然后我们再来看一下支持向量机SVM的公式推导情况 来看一下支持向量机是如何把现实问题转换成数学问题的. 首先我们来看这里的方程比如说,中间的黑线我们叫做l2 那么上边界线我们叫l1 下边界线叫做l3 如果我们假设l2的方程是上面这个方程WT.x+b = 0 那么这里 我们只要确定w和…

软考高项第四版五组十域表+ITTO背诵笔记及助记

基于第四版做的笔记,助记是自己编的 还是得靠理解记忆,下面是文档,也用anki制作了记忆卡片,需要的可以自行导入卡包

慎用!3个容易被打的Python恶搞脚本

Python 无限恶搞朋友电脑,别提有多爽了,哈哈,打造自己的壁纸修改器,电脑无限锁屏, 无线弹窗,都在这里!!! 1、修改电脑桌面壁纸 工具使用 开发环境:python3…

线段树基础模板c++

线段树的基础模板代码 #include <bits/stdc.h> using namespace std; #define N 100005 #define int long long#define lc p << 1 // 2*i #define rc p << 1 | 1 // 2*i1int n, m; int w[N];struct node {int l, r, sum, add;} tr[N * 4]; // 构建线段树…

【Openstack Train安装】四、MariaDB/RabbitMQ 安装

本章介绍了MariaDB/RabbitMQ的安装步骤&#xff0c;MariaDB/RabbitMQ仅需要在控制节点安装。 在安装MariaDB/RabbitMQ前&#xff0c;请确保您按照以下教程进行了相关配置&#xff1a; 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Opensta…

分支和循环

通常来说&#xff0c;C语言是结构化的程序设计语言&#xff0c;这里的结构包括顺序结构、选择结构、循环结构&#xff0c;C语言能够实现这三种结构&#xff0c;如果我们仔细分析&#xff0c;我们日常生活中所见的事情都可以拆分为这三种结构或者它们的组合。 下面我会仔细讲解我…

Windows驱动中使用数字签名验证控制设备访问权限

1. 背景 在一般的驱动开发时&#xff0c;创建了符号链接后在应用层就可以访问打开我们的设备并进行通讯。 但我们有时候不希望非自己的进程访问我们的设备并进行交互&#xff0c;虽然可以使用 IoCreateDeviceSecure 来创建有安全描述符的设备&#xff0c;但大数的用户账户为了方…

基于Vue.js的厦门旅游电子商务预订系统的设计和实现

项目编号&#xff1a; S 030 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S030&#xff0c;文末获取源码。} 项目编号&#xff1a;S030&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 景点类型模块2.2 景点档案模块2.3 酒…

【Redis】redis 高性能--线程模型以及epoll网络框架

目录 一.前言 二.多线程的弊端 2.1 锁的开销问题 2.2 多线程上下文切换带来的额外开销 2.3 多线程占用内存成本增高 三.基本IO模型与epoll 模式 3.1 基本IO模型 3.2 单线程处理机制 四.总结 一.前言 我们经常讨论到&#xff0c;redis 是单线程&#xff0c;那为什么单线…

02、pytest环境准备

工具准备 下载Python——python官网下载&#xff1a;https://www.python.org/下载PyCharm——pycharm官网下载&#xff1a;https://www.jetbrains.com.cn/en-us/pycharm/参考文档——pytest官方文档&#xff1a;https://docs.pytest.org/en/7.4.x/一个方便好用的office库——p…

632. 最小区间

632. 最小区间 class Solution {public int[] smallestRange(List<List<Integer>> nums) {int size nums.size();Map<Integer, List<Integer>> indices new HashMap<Integer, List<Integer>>();int xMin Integer.MAX_VALUE, xMax Inte…

在线 SQL 模拟器SQL Fiddle使用简介

在线 SQL 模拟器SQL Fiddle使用简介 本文可作为“SQL语言与SQL在线实验工具的使用” https://blog.csdn.net/cnds123/article/details/115038700 一文的补充。 有时候&#xff0c;我们想去验证 SQL语句&#xff0c;却缺少数据库环境&#xff0c;那该怎么办呢&#xff1f; 这…

Flask使用线程异步执行耗时任务

1 问题说明 1.1 任务简述 在开发Flask应用中一定会遇到执行耗时任务&#xff0c;但是Flask是轻量级的同步框架&#xff0c;即在单个请求时服务会阻被塞&#xff0c;直到任务完成&#xff08;注意&#xff1a;当前请求被阻塞不会影响到其他请求&#xff09;。 解决异步问题有…

人工智能原理复习--知识表示(二)

文章目录 上一篇产生式表示法推理方式 结构化表示语义网络语义网络表示知识的方法和步骤应用题目 框架表示法下一篇 上一篇 人工智能原理复习–知识表示&#xff08;一&#xff09; 产生式表示法 把推理和行为的过程用产生式规则表示&#xff0c;所以又称基于规则的系统。 产…