数据库进阶教学——数据库故障恢复(日志文件)
目录
一、日志简介
二、日志文件操作
1、查看日志状态
2、开启日志功能
3、查看日志文件
4、查看当前日志
5、查看日志中的事件
6、删除日志文件
7、查看和修改日志文件有效期
8、查看日志文件详细信息
三、删除的数据库恢复
一、日志简介
- 日志是记录所有数据库表结果变更以及表数据修改的二进制日志,而不会记录SELECT和SHOW这类的操作。
- Binlog文件名默认为“主机名_binlog-序列号”格式,例如:stu_binlog-000001,也可以在配置文件中指定名称。
- 文件记录模式有STATEMENT、ROW和MIXED三种:
- ROW(row-based replication,RBR):日志中会记录每一行数据被修改的情况,然后在slave端对相同的数据进行修改。
- STATEMENT(statement-based replication,SBR):每一条被修改数据SQL都会记录到master的日志中,slave在复制的时候SQL进程会解析成和原来master端执行过的相同的SQL再次执行,简称SQL语句复制。
- MIXED(mixed-based replication,MBR):以上两种模式的混合使用,一般会使用STATEMENT模式保存日志,对于STATEMENT模式无法复制的操作则使用ROW模式来保存日志,MySQL会根据执行的SQL语句来选择写入的模式。
二、日志文件操作
1、查看日志状态
-
show variables like "log_bin"; 或 show variables like "%log_bin%"; 
2、开启日志功能
-
set global log_bin=1; - 【注】如遇到下面错误。

- 原因:mysql二进制日志记录(一个问题牵扯出更多问题) - 简书 (jianshu.com)
3、查看日志文件
-
show binary logs; 或 show master logs; -

4、查看当前日志
-
show master status; 
5、查看日志中的事件
-
# 查看当前日志文件中的事件 show binlog events; # 查看指定日志文件中的事件 show binlog events in 'DESKTOP-81MU6JA-bin.000012'; 

- 【注】上一个事件的结束位置,就是下一个事件的开始位置。
6、删除日志文件
-
# 删除指定的日志文件 purge binary logs to 'DESKTOP-81MU6JA-bin.000012'; # 删除指定时间之前的文件 purge binary logs before '2023-11-02 00:00:00'; # 清除所有日志文件 reset master;
7、查看和修改日志文件有效期
-
# 查看日志文件的有效期 show variables like '%binlog_expire_logs_seconds'; # 默认有效期为0,表示日志的自动清理功能没有启用 # 设置日志文件的有效期(启用日志自动清理),设置为1,表示超出1天,日志文件会自动删除(单位为秒) set global binlog_expire_logs_seconds=60*60*24; -

- 【注】原本是show variables like '%expire_logs_days%',即按天设置,但是已经弃用了。
8、查看日志文件详细信息
- 找到data文件夹(一般在mysql的安装路径下),在data文件夹下以管理员身份打开终端。输入下列命令:
-
mysqlbinlog DESKTOP-81MU6JA-bin.000012
-
- 【注】data文件夹如果不在mysql的安装路径,参考:mysql没有data和my.ini文件怎么办?_mysql没有data文件夹_云边的快乐猫的博客-CSDN博客

三、删除的数据库恢复
- 查看要删除的数据库。
- 查看该数据库中的内容。
- 查看当前日志文件。
- 查看该日志文件中的事件。
- 删除advanced_database数据库。
- 恢复该数据库,有两种方式。
- 方式一:利用事件的起始号和结束号位置进行恢复。
- 查看日志文件中的信息,找到需要取得事件的起始号和结束号。
- 恢复数据库。
- 找到data文件夹(一般在mysql的安装路径下),在data文件夹下打开终端。输入下列命令:
-
mysqlbinlog --start-position=157 --stop-position=4696 DESKTOP-81MU6JA-bin.000012 | mysql -u root -p Enter password: 数据库密码
-
- 【注】data文件夹如果不在mysql的安装路径,参考:mysql没有data和my.ini文件怎么办?_mysql没有data文件夹_云边的快乐猫的博客-CSDN博客

- 再次查看,该数据库已经恢复。

- 找到data文件夹(一般在mysql的安装路径下),在data文件夹下打开终端。输入下列命令:
- 查看日志文件中的信息,找到需要取得事件的起始号和结束号。
- 方式二:利用指定的时间来恢复。
- 删除advanced_database数据库。
- 查看日志文件详细信息,找到对应的时间点。
- 恢复数据库。
- 在data文件夹下打开终端,输入下列命令:
-
mysqlbinlog --start-datetime="2023-11-02 19:03:18" --stop-datetime="2023-11-03 21:23:09" DESKTOP-81MU6JA-bin.000012 | mysql -u root -p Enter password: 数据库密码 
- 再次查看,该数据库已经恢复。

- 删除advanced_database数据库。
相关文章:
数据库进阶教学——数据库故障恢复(日志文件)
目录 一、日志简介 二、日志文件操作 1、查看日志状态 2、开启日志功能 3、查看日志文件 4、查看当前日志 5、查看日志中的事件 6、删除日志文件 7、查看和修改日志文件有效期 8、查看日志文件详细信息 三、删除的数据库恢复 一、日志简介 日志是记录所有数据库表结…...
Leetcode 73 矩阵置0
class Solution {//1.用矩阵的第一行和第一列来标记该行或该列是否应该为0,但是这样的话忽视了第一行或第一列为0的情况//2.用标记row0和column0来标记第一行或第一列是否该为0public void setZeroes(int[][] matrix) {int n matrix.length;int m matrix[0].length;boolean r…...
Rust学习日记(二)变量的使用--结合--温度换算/斐波那契数列--实例
前言: 这是一个系列的学习笔记,会将笔者学习Rust语言的心得记录。 当然,这并非是流水账似的记录,而是结合实际程序项目的记录,如果你也对Rust感兴趣,那么我们可以一起交流探讨,使用Rust来构建程…...
html各个标签的使用
一、标签的分类 1、单标签和双标签 1. 单标签:<img> img br hr 2. 双标签:<div></div> div span <a></a> h p a 2、按照标签属性分类 1. 块标签:自己独占一行 h1~h6 p div 2. 行内(内联)标签 …...
android 混淆
# 指定代码的压缩级别 0 - 7(指定代码进行迭代优化的次数,在Android里面默认是5,这条指令也只有在可以优化时起作用。) -optimizationpasses 5 # 混淆时不会产生形形色色的类名(混淆时不使用大小写混合类名) -dontusemixedcaseclassnames # 指定不去忽略…...
旋转链表(C++解法)
题目 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head [1,2,3,4,5], k 2 输出:[4,5,1,2,3]示例 2: 输入:head [0,1,2], k 4 输出:[…...
AcWing 134:双端队列
【题目来源】https://www.acwing.com/problem/content/description/136/【题目描述】 达达现在碰到了一个棘手的问题,有 N 个整数需要排序。 达达手头能用的工具就是若干个双端队列。 她从 1 到 N 需要依次处理这 N 个数,对于每个数,达达能做…...
Spring Cloud Gateway 重写 URL
目录 1、简介 2、Spring Cloud Gateway 快速回顾 3、基于配置的 URL 重写 4、基于 DSL 的 URL 重写 5、测试 6、总结 1、简介 Spring Cloud Gateway 的常见用例是作为一个网关,代理一个或多个服务,从而为客户端提供更简单的消费方式。 本文将带你…...
【C语法学习】10 - scanf()函数
文章目录 0 前言1 函数原型2 参数2.1 格式字符串2.1.1 转换说明 2.2 参数列表 3 返回值4 读取机制4.1 基本概念4.2 转换说明4.3 读取过程4.4 读取示例4.5 多参数 6 示例6.1 示例16.2 示例26.3 示例36.4 示例4 0 前言 scanf()函数虽然使用起来较为灵活,但是其读取机…...
ffmpeg mp3截取命令,视频与mp3合成带音频视频命令
从00:00:03.500开始截取往后长度到结尾的mp3音频(这个更有用,测试好用) ffmpeg -i d:/c.mp3 -ss 00:00:03.500 d:/output.mp3 将两个音频合并成一个音频(测试好用) ffmpeg -i "concat:d:/c.mp3|d:/output.mp3&…...
文件夹还在,里面文件没了?问题这样解决
文件夹还在但文件无故消失怎么办?文件的消失对于我们来说可能是个令人沮丧且困惑的问题。有时候,我们可能会发现文件夹依然存在,但其中的文件却消失了。在这篇文章中,我们将探讨为什么电脑文件会无故消失的原因,并提供…...
使用 OpenCV 和 Tesseract OCR 进行车牌识别
您将了解自动车牌识别。我们将使用 Tesseract OCR 光学字符识别引擎(OCR 引擎)来自动识别车辆牌照中的文本。 Python-tesseract: Py-tesseract 是 Python 的光学字符识别 (OCR) 工具。也就是说,它将识别并“读取”图像中嵌入的文本。Python-tesseract 是 Google 的 Tessera…...
What exactly are the practices involved in DevOps?
目录 1. Continuous Integration (CI) 2. Continuous Deployment (CD) 3. Infrastructure as Code (IAC) 4. Configuration Management 5. Monitoring and Logging 6. Automated Testing 7. Collaboration and Communication 8. Microservices Architecture 9. Conta…...
Spring底层原理(五)
Spring底层原理(五) 本章内容 介绍Aware接口与InitializingBean接口、Bean的初始化与销毁、Scope Aware接口 作用:用于注入一些与容器相关的信息 类名作用BeanNameAware注入Bean的名称BeanFactoryAware注入BeanFactory容器ApplicationContextAware注入ApplicationContext容…...
算法的基本概念(数据结构与算法)
数据结构是指数据元素之间的关系和组织方式,在计算机科学中被广泛应用于存储和操作数据的方法和技术。 数据元素: 数据元素是构成数据的基本单位,可以是数字、字符、记录等。 数据项: 数据元素中的一个部分,表示一个属…...
高阶数据结构学习——LRU Cache
文章目录 1、了解LRU Cache(Least Recently Used缩写)2、代码实现 1、了解LRU Cache(Least Recently Used缩写) Cache是缓存,在磁盘和内存之间,内存和寄存器之间都存在,CPU和内存之间存在三级缓…...
代码冲突解决
远程仓库修改 本地代码修改 接下来我们push一下 如果使用IDE 冲突内容如下: 我们可以使用自带的工具进行修改 我们选择接受自己改动的即可 如果使用git工具怎么去处理呢 远程分支是这样 本地是这样的 add和commit之后,再pull,最后pus…...
c/c++程序的内存开辟时 的内存情况
我们写的代码都是要存放在内存空间中的,我们经常说堆区,静态区,还有栈区,相信很多人不是很明白,在今天这篇博客中让大家对它们有一个粗略的认识 1.栈区(static) 在执行函数时,函数内…...
【linux常用命令+vi编辑器_2023.11.3】
芯片开发 Linux/Unix(环境) EDA工具TCL(波形) SVN/GIT(版本控制) Makefile(脚本语言) Perl/Python(脚本语言) Vim/Gvim(编辑器) 命令…...
okhttp post请求 header post参数加密遇到的两个问题
如果你对于网络请求用了https后是否还有必要对参数加密有疑问可以看我上篇的文章:网络安全https 记得耐心看完,下面说问题: Caused by: java.lang.IllegalArgumentException: Unexpected char 0x0a 一开始以为是okhttp框架对特殊字符做了现在…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...











