当前位置: 首页 > news >正文

MySQL数据库误删恢复_mysql 数据 误删

2、BigLog日志相关

2.1、检查biglog状态是否开启

声明: 当前为mysql版本5.7 当前为mysql版本5.7****当前为mysql版本5.7

2.1.1、Navicat工具执行
SHOW VARIABLES LIKE 'LOG_BIN%';
  • OFF 是未开启状态,如果不是ON 开启状态需要开启为ON。{默认情况下就是关闭状态}

2.1.2、命令行执行
  • 其中-h表示服务器名,localhost表示本地;-u为数据库用户名,root是mysql默认用户名;-p为密码,如果设置了密码,可直接在-p后链接输入,如:-proot;如果用户没有设置密码,显示Enter password时,直接回车即可。

    mysql -hlocalhost -uroot -proot

2.2、开启biglog
  • 执行语句开启biglog

    SET GLOBAL log_bin = ‘ON’;

执行结果:

注意: **报错了! 报错了!报错不可怕,可怕的是报错没有征兆。**如果要永久修改log_bin的值,需要修改MySQL的配置文件(my.cnf或my.ini),并重启MySQL服务器使修改生效。(只读变量,不能使用set修改,只能通过修改my.cnf或my.ini文件再重启生效)

  1. 遇到这种错误,需要修改my.cnf <Linux系统>my.ini<Windows系统>配置文件,在 [mysqld] 下面增加log-bin=mysql-bin后,重启MySQL服务即可

  2. 在 [mysqld] 段落中添加的log-bin=mysql-bin这是一个 MySQL 数据库的配置选项,用于开启二进制日志记录。二进制日志可以记录所有的数据库操作,包括增删改查等。开启二进制日志记录可以用于备份和恢复数据库,以及进行数据复制等操作。

  3. 在 [mysqld] 段落中添加 server-id=1 (其中的1可以替换为任意整数,但要确保主从之间的server-id不同)

  4. server-id是 MySQL 数据库中的一条配置参数,用于设置 MySQL 实例的唯一 ID。每个 MySQL 实例都必须有一个唯一的 server-id,以便 MySQL 集群中的各个节点能够相互识别和通信。通常情况下,server-id参数会被设置为一个唯一的数字或字符串,比如可以设置为当前服务器的 IP 地址或主机名。如果在一个 MySQL 集群中配置不正确,可能会导致数据同步出现问题,因此需要谨慎配置。

    开启BigLog用于备份和恢复数据库,以及进行数据复制等操作。

    log-bin=mysql-bin

    实例都必须有一个唯一的 server-id 如:server-id=1 ,以便 MySQL 集群中的各个节点能够相互识别和通信。

    server-id=1

  • ON 是开启状态,如果是开启状态那就可以做数据恢复了。

2.3、查看biglog日志文件
show binary logs;

2.3.1、查看master状态
show master status;

2.3.2、查看第一个binlog文件内容
show binlog events;

2.3.3、查看指定binlog文件的内容
show binlog events in 'mysql-bin.000002';

**注意:**上一个事件的结束位置,就是下一个事件的开始位置。如下↓↓↓

2.3.4、刷新log日志
flush logs;

2.3.5、删除日志文件

MySQL删除日志的方式有以下几种:

  1. 通过Reset Master指令删除全部binlog日志,删除之后,日志编号将从xxxx.00001重新开始。
  2. 执行指令purge master logs to ‘mysqlbin.******’,该命令将删除指定编号之前的所有日志。
  3. 执行指令purge master logs before ‘yyyy-mm-dd hh24:mi:ss’,该命令将删除指定日期之前的所有日志。
  • 列出所有日志

    show binary logs;

  • 指定删除

    purge master logs to ‘mysql-bin.000001’;

  • 指定日期删除(该命令将删除指定日期之前的所有日志)

    purge binary logs before ‘2023-5-29 23:59:59’;

  • 删除全部binlog日志

    reset master;

2.3.6、查看和修改日志文件有效期

说明:

  1. 查看日志文件的有效期 **show variables like ‘%expire_logs_days%’;**默认有效期为 0,表示 Binlog 日志的自动清理功能是没有启用的
  2. 设置日志文件有效期 参数set global expire_logs_days=7; 此参数的含义是设置日志的过期天数为7天,过了指定的天数后日志将会被自动删除,这样将有利于减少DBA管理日志的工作量。
  • 查看日志文件的有效期

    show variables like ‘%expire_logs_days%’;

  • 设置日志文件有效期

    set global expire_logs_days=7;

3、误删恢复

3.1、查看数据库
show databases;

3.2、查看表中的数据
 --切换到指定数据库。
use text; 
--显示当前数据库中的所有表名。
show tables;
--查询表数据
select * from user_misjudge;

3.3、查看用户表相关操作日志

说明:show binary logs; 和show master logs; 都是显示所有可用的binlog日志文件列表。

show master logs;

注意: 可以看到我之前删除的表数据已经被记录了 ,由于之前演示删除日志,我的日志是不完整的不完整的日志是不能恢复的 。(开启日志后 重新创一个库 详情查看:3.4重新创建库**) ↓↓↓**

3.4、重新创建库
  • 删除库

    drop database text

  • 清空全部日志

    reset master;

  • 创建库

    CREATE DATABASE text CHARACTER SET ‘utf8’ COLLATE ‘utf8_general_ci’

  • 查看日志信息

    show binlog events in ‘mysql-bin.000001’;

3.4、删除数据库text
 drop database text;

可以看到列表text库已经被删除

3.5、恢复数据库
3.5.1、查看日志文件中的信息
show binlog events in 'mysql-bin.000001';

3.5.2、利用事件开始结束位置进行恢复
mysqlbinlog --start-position=154 --stop-position=427 mysql-bin.000001 | mysql -uroot -p

以上该命令是一个从MySQL二进制日志文件中提取数据并导入到MySQL数据库的命令。具体解释如下:

  1. mysqlbinlog:MySQL二进制日志文件命令,用于读取、处理和输出MySQL二进制日志文件中的内容。
  2. –start-position=154:指定从二进制日志文件的154个字节开始读取,默认情况下,mysqlbinlog从文件的开头开始读取。
  3. –stop-position=427:指定从二进制日志文件的427个字节结束读取,默认情况下,mysqlbinlog读取到文件的末尾。
  4. mysql-bin.000001:二进制日志文件名,表示要读取的二进制日志文件。
  5. |:管道符,将前面的命令的输出作为后面命令的输入。
  6. mysql:MySQL客户端命令,用于连接和操作MySQL数据库。
  7. -uroot:指定以root用户身份连接MySQL数据库。
  8. -p:表示连接MySQL数据库时需要输入密码。
  • 注意: 此命令是使用终端,进入MySQL时的路径下的data目录下执行。

  • 查看是否恢复删除的库text

3.5.3、查看mysql-bin.000001文件日志细节

说明

  1. 由于binlog是二进制的文件,使用mysqlbinlog命令进行转换。
  2. mysqlbinlog:MySQL二进制日志文件命令,用于读取、处理和输出MySQL二进制日志文件中的内容。
  3. 找到安装MySQL时的路径下的data目录,不管你是Linux 或windows,我目前是windows 我就在data目录下使用cmd (如果是linux查详细的日志信息内容,同理进入MySQL时的路径下的data目录,这个时候需要用 ls -la 来查看细节,执行命令:mysqlbinlog ‘mysql-bin.000001’ )
  4. 配置MySQL环境变量,不配置执行命令会失败,右击我的电脑–高级系统设置–环境变量–系统变量–Path(点击,添加MySQL的bin目录)
  • 生成mysql-bin.000001文件日志细节名称是xj.sql

    mysqlbinlog “mysql-bin.000001”>“xj.sql”

  • 生成后的mysql-bin.000001文件日志位置

  • 解析后的mysql-bin.000001文件日志细节

3.5.4、利用事件时间节点进行恢复
mysqlbinlog --start-datetime="2023-06-01 11:32:34" --stop-datetime="2023-06-01 11:47:46" mysql-bin.000001 | mysql -uroot -p
  • 查看恢复的text库

3.6、恢复数据库表
3.6.1、进入库
  • 可以看到text库下没有表

3.6.2、库下创建表
  • 建表语句文章开头已经给大家准备直接拿过来执行。

  • 表已经创建成功

3.6.3、库下的表中添加数据
insert user_misjudge(attr1) values('CSDN臭弟弟');
insert user_misjudge(attr1) values('这是一条数据');

3.6.4、删表之间查看日志信息

3.6.4、删除表
drop tables user_misjudge;
  • 查询user_misjudge已经不存在了

3.6.5、恢复表
mysqlbinlog --start-position=720 --stop-position=1579 mysql-bin.000001 | mysql -uroot -p
  • 不用再说了吧一定要终端执行以上命令,离开mysql命令行进入mysql路径下的data目录使用终端执行。
3.6.7、查看恢复的表

  • 查看日志

    show binlog events in ‘mysql-bin.000001’;

可以看到 我们只恢复了表 并没有恢复数据 。为什么 往下继续↓↓

3.6.8、分析日志

原因:

在导航{3.6.5、恢复表} 我们执行的语句mysqlbinlog --start-position=720 --stop-position=1579 mysql-bin.000001 | mysql -uroot -p, 事件开始位置720 ,事件结束位置1579,说明我们位置不对呗,这个位置只能恢复表不能恢复数据。(想要恢复数据应该在 事件的结束位置应该在 删除表之前的最后连接的位置才对)

  • 完整日志如下:

    mysql> show binlog events in ‘mysql-bin.000001’;
    ±-----------------±-----±---------------±----------±------------±--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

相关文章:

MySQL数据库误删恢复_mysql 数据 误删

2、BigLog日志相关 2.1、检查biglog状态是否开启 声明: 当前为mysql版本5.7 当前为mysql版本5.7****当前为mysql版本5.7 2.1.1、Navicat工具执行 SHOW VARIABLES LIKE LOG_BIN%;OFF 是未开启状态&#xff0c;如果不是ON 开启状态需要开启为ON。{默认情况下就是关闭状态} 2.…...

SpringAI集成DeepSeek实战

SpringAI集成DeepSeek实战教程 引言 Spring AI作为Spring生态系统中的新成员&#xff0c;为开发者提供了便捷的AI集成方案。本文将详细介绍如何在Spring项目中集成DeepSeek模型&#xff0c;实现智能对话等功能。 环境准备 在开始之前&#xff0c;请确保您的开发环境满足以下要…...

解决 THC/THC.h: No such file or directory 报错

报错现象&#xff1a; cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C In file included from /data/joyiot/liyong/codes/graspnet-baseline/knn/src/knn.h:5:0,from /data/joyiot/liyong/codes/graspnet-baseline/knn/s…...

S4D480 S4HANA 基于PDF的表单打印

2022年元旦的笔记草稿 SAP的表单打印从最早的SAPScripts 到后来的SMARTFORM&#xff0c;步入S4时代后由于Fiori的逐渐普及&#xff0c;更适应Web的Adobe Form成了SAP主流output文件格式。 目录 一、 基于PDF表单打印系统架构Interface 接口Form 表单ContextLayout 二、表单接…...

数组_移除元素

数组_移除元素 一、leetcode-27二、题解1.代码2.思考 一、leetcode-27 移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数…...

Vue2/Vue3分别如何使用Watch

在 Vue 2 和 Vue 3 中&#xff0c;watch 用于监听数据的变化并执行相应的逻辑。虽然两者的核心功能相同&#xff0c;但在语法和使用方式上有一些区别。以下是 Vue 2 和 Vue 3 中使用 watch 的详细说明&#xff1a; Vue 2 中的 watch 在 Vue 2 中&#xff0c;watch 是通过选项式…...

C++从入门到实战(四)C++引用与inline,nullptr

C从入门到实战&#xff08;四&#xff09;C引用与inline&#xff0c;nullptr 前言一、C 引用&#xff08;一&#xff09;什么是引用&#xff08;二&#xff09;引用的特点&#xff08;三&#xff09;引用作为函数参数&#xff08;四&#xff09;引用作为函数返回值&#xff08;…...

Linux库制作与原理:【静态库】【动态库】【目标文件】【ELF文件】【ELF从形成到假造轮廓】【理解链接和加载】

目录 一.什么是库 二.静态库 2.1创建静态库 我们在之前的路径下新建lib使用我们自己的库 2.2 使用makefile生成静态库 三.动态库 3.1动态库生成 3.2动态库使用 3.3库运行搜索路径 四.目标文件 五.ELF文件 六.ELF从形成到加载轮廓 6.1ELF形成可执行 6.2 ELF可执行文…...

项目BUG

项目BUG 前言 我创作这篇博客的目的是记录学习技术过程中的笔记。希望通过分享自己的学习经历&#xff0c;能够帮助到那些对相关领域感兴趣或者正在学习的人们。 项目BUG 1.低频率信号(100k或 200K以下)可以直接用一根导线焊接出几根导线来分几路&#xff0c;高频率信号只能…...

wordpress部署nginx版的

一、通过nginx部署wordpress 1、用yum源安装nginx yum install -y nginx 2、安装php相关软件 前提安装webtatic rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 通过yum源安装php相关软件 yum -y install php72w php72w-pdo php72w-mysqlnd php72w…...

【鸿蒙Next】优秀鸿蒙博客集锦

鸿蒙基础开发&#xff1a;多文件压缩上传及断点续传_鸿蒙 断点续传-CSDN博客...

【第2章:神经网络基础与实现——2.1 前馈神经网络的结构与工作原理】

老铁们好!今天我们要来一场长达两万字的超详细技术探险,我会像拆解乐高积木一样把前馈神经网络(Feedforward Neural Network)的每个零件摆在台面上,用最接地气的方式让你彻底搞懂这个深度学习基石的工作原理。准备好了吗?我们开始吧! 第一章:神经网络的 “乐高积木” 1…...

python-leetcode-阶乘后的零

172. 阶乘后的零 - 力扣&#xff08;LeetCode&#xff09; class Solution:def trailingZeroes(self, n: int) -> int:count 0while n > 5:n // 5count nreturn count...

Python:学生管理系统(继承性、多态性)。

输出样例如图&#xff1a; 题目内容&#xff1a; 利用继承、多态性等面向对象程序功能编写程序&#xff0c;实现学生管理系统&#xff0c;并包含以下内容&#xff1a; 第一&#xff0c;基类为学生类&#xff0c;并以此派生出本科生类、研究生类。 第二&#xff0c;本科生类包含…...

网络安全RSA加密

网络安全课相关知识&#xff1a; RSA预备知识 1.1 快速幂算法 顾名思义&#xff0c;快速幂就是快速算底数的$n$次幂。其时间复杂度为${\rm{O(log n)}}$&#xff0c;与朴素的$O\left( n \right)$相比&#xff0c;效率有了极大的提高。具体可以参考百度百科&#xff1a;快速幂。…...

Vue学习笔记4

Vue学习笔记 一、自定义创建项目 基于VueCli自定义创建项目架子 二、vuex基本认知 1、vuex概述 是什么&#xff1a;是vue的状态管理工具&#xff08;插件&#xff09;&#xff0c;状态就是数据 大白话&#xff1a;vuex是一个插件&#xff0c;可以帮助我们管理vue通用的数…...

mariadb数据库的安装与部署

1、通过yum源安装mariadb数据库 yum -y install mariadb-server 2、启动mariadb数据库服务 systemctl start mariadb.service 3、配置mariadb数据库全局环境变量 systemctl enable mariadb.service 4、修改mariadb数据库默认密码&#xff0c;数据库默认密码为空 执行…...

单调队列与栈

一.题 1. 思路&#xff1a; 构建小压大的单调递减栈&#xff0c;对于每个栈的元素都进行处理并加到结果上 class Solution { public:int sumSubarrayMins(vector<int>& arr) {int stk[10000000],top 0;long long ans 0;for(int i 0;i<arr.size();i){while(top…...

Matlab 多项式曲线拟合(三维)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 对于高维空间曲线的拟合,参数化是一种非常好的方式,可以让我们很容易得到我们想要的目标曲线。 假设给定一组数据点 ( u i ​ , x i ​ ) 、 ( u i ​...

机器翻译同样的文本,是从英语翻译成日语更准确还是中文翻译成日语更准确

在大多数情况下&#xff0c;从英语翻译成日语会比从中文翻译成日语更准确&#xff0c;原因如下&#xff1a; 1. 语言结构的相似性 英语和日语的句子结构更接近&#xff0c;特别是在语法、从句使用、定语位置等方面。例如&#xff0c;日语和英语都使用 SVO 结构&#xff08;主…...

别再让扰动拖后腿!手把手教你用MATLAB/Simulink实现非线性系统的干扰观测器(附完整代码)

非线性系统扰动观测器实战&#xff1a;从理论到MATLAB代码的完整实现指南 在控制工程实践中&#xff0c;非线性系统的干扰抑制一直是工程师面临的棘手挑战。想象一下&#xff0c;你正在调试一台工业机械臂&#xff0c;理论模型完美无缺&#xff0c;但实际运行时总是出现无法解…...

GetQzonehistory:5分钟免费备份你的QQ空间青春回忆

GetQzonehistory&#xff1a;5分钟免费备份你的QQ空间青春回忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在担心那些承载青春记忆的QQ空间说说会随着时间消失吗&#xff1f;GetQ…...

3步掌握抖音内容保存:让精彩瞬间永不消逝

3步掌握抖音内容保存&#xff1a;让精彩瞬间永不消逝 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量…...

如何高效调试硬件设备:SSCom串口调试助手让你的Linux/Mac开发更简单

如何高效调试硬件设备&#xff1a;SSCom串口调试助手让你的Linux/Mac开发更简单 【免费下载链接】sscom Linux/Mac版本 串口调试助手 项目地址: https://gitcode.com/gh_mirrors/ss/sscom 你是否曾经在调试嵌入式设备时&#xff0c;因为找不到合适的串口工具而烦恼&…...

体验Taotoken官方价折扣活动对项目开发成本的实际影响

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 体验Taotoken官方价折扣活动对项目开发成本的实际影响 对于个人开发者和初创团队而言&#xff0c;大模型API的调用成本是项目预算中…...

从零到一:支付宝小程序获取用户手机号的完整配置与实战解析

1. 为什么获取手机号要先配置开发设置&#xff1f; 很多刚接触支付宝小程序开发的同学可能会觉得奇怪&#xff1a;为什么获取个手机号要搞这么多前置配置&#xff1f;直接调个API不就行了吗&#xff1f;这里其实涉及到支付宝生态的安全设计理念。和微信小程序不同&#xff0c;…...

mbedtls调试日志怎么开?从MBEDTLS_DEBUG_C配置到实战排错,一次讲清

mbedtls调试日志全解析&#xff1a;从编译配置到实战排错指南 遇到TLS握手失败时&#xff0c;屏幕上那个晦涩的错误码&#xff08;比如-0x6900&#xff09;往往让人无从下手。mbedtls内置的调试系统能将这些黑盒操作转化为可读的日志流&#xff0c;本文将带你解锁这套调试工具链…...

Python逆向工程库Gemini-API:解锁Google Gemini多模态与深度研究全功能

1. 项目概述与核心价值如果你正在寻找一个能让你在Python项目中无缝接入Google Gemini&#xff08;就是那个以前叫Bard的AI&#xff09;全部能力的库&#xff0c;并且希望它能像官方API一样优雅易用&#xff0c;同时又能绕过一些官方限制&#xff0c;直接使用网页版的高级功能&…...

从告警风暴到自治闭环,AI原生运维到底卡在哪?SITS 2026专家团亲授4个致命断点与破局清单

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;从告警风暴到自治闭环&#xff0c;AI原生运维到底卡在哪&#xff1f;SITS 2026专家团亲授4个致命断点与破局清单 在SITS 2026现场&#xff0c;来自阿里云、字节跳动与工商银行的AI运维联合工作组披露了…...

利用OpenClaw on Android将旧手机改造为原生性能AI服务器

1. 项目概述&#xff1a;将旧手机变身高性能AI服务器的魔法 如果你和我一样&#xff0c;手边总有一两台退役的安卓手机&#xff0c;放着吃灰觉得可惜&#xff0c;挂闲鱼又卖不了几个钱&#xff0c;那今天这个项目绝对能让你眼前一亮。OpenClaw on Android&#xff0c;简称OCA&…...