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

mysql-恢复数据(日志管理)

前言

在mysql中我们有时候会出现误删除,或者其他的问题,我们可以通过mysql的日志进行恢复

操作

我们可以在mysql里面定义一个错误日志,方便我们可以排查是因为什么原因来解决mysql无法启动问题

-------------------------------------------------------------------------------------------------------------------------------

1.错误日志

进入到配置文件

vim /etc/my.cnf

添加或者找到你的错误日志

log_error=/tmp/mysql3306.log                  这里的路径是我自己设置的每人的目录有可能不同,具体看自己

重启

systemctl restart mysqld

查看日志        -这里就可以看到你在启动过程中遇到的问题

---------------------------------------------------------------------------------------------------------------------------------

2.二进制日志(binlog)

作用

(1) 主从要依赖二进制日志
(2) 数据恢复时需要依赖于二进制日志

我们在配置文件里面进行添加这个一般没有启动

log_bin=/databinlog/mysql-bin                这个是我在数据库进行了增删改的操作二进制文件就会存放到这里,后面我们就可以通过二进制文件进行恢复

我们可以查看一个用cat命令是查看不到的需要用mysql自己的

查看二进制日志内容
mysqlbinlog mysql-bin.000001        #看语句级日志,不能看行数据                
mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000001   #使用解码的方式,可看行数据
mysqlbinlog -d event mysql-bin.000001     #摘要显示事件号码

这里的        mysql-bin000001是我自己的,每次数据库经过重启或者刷新这个值就会加一

刷新命令         flush log;

截取日志

在恢复数据的途中我们可以选择从哪里恢复到哪里

我们恢复找到#数字开头然后下面找到操作命令的行然后到结束行就可以恢复

命令

1.截取出来保存到/tmp/a.sql目录下

mysqlbinlog --start-position=233 --stop-position=801 mysql-bin.000001 >/tmp/a.sql

这里的意思就是从233行恢复到801行

2.关闭二进制文件记录 set_sql_log_bin=0;        (为了避免太多的日志,不关闭会在日志重新疾苦一遍执行日志)

3.把数据导入到mysql         source /tmp/a.sql 

4.开启二进制文件         set_sql_log_bin=1;                --1为开启 0为关闭

----------------------------------------------------------------------------------------------------------------

第二种恢复(GTID)

对于binlog中的每一个事务,都会生成一个GTID号码                -
DDL ,DCL 一个event就是一个事务,就会有一个GTID号.
DML语句来讲,begin到commit,是一个事务,就是一个GTI

查看gtid号

cat /usr/local/mysql/data/auto.cnf 
[auto]
server-uuid=e2e9b01e-9687-11eb-b577-000c29b0384b

或者这样也可以查看到

TID是一个:自增长的数据,从1开始
e2e9b01e-9687-11eb-b577-000c29b0384b:1-15

GTID的幂等性
如果拿有GTID的日志去恢复时,检查当前系统中是否有相同GTID号,有相同的就自动跳过
会影响到binlog恢复和主从复制.

GTID的开启和配置
vim /etc/my.cnf
gtid-mode=on
enforce-gtid-consistency=true                

 基于GTID,binlog恢复

(1) 截取日志mysqlbinlog --include-gtids='3b915642-87b4-11ef-ae7c-000c2937c73c:1-3' mysql-bin.000001 >/tmp/gtid.sql

cd /data/binlog                -这里还是上面你的日志存放位置

mysqlbinlog --skip-gtids --include-gtids='820f8917-d358-11ec-b243-000c29cbdce4:1-3' mysql-bin.000001 >/tmp/gtid.sql                        -这里红的需要看你自己的是多少来修改
--skip-gtids 作用:在导出时,忽略原有的gtid信息,恢复时生成最新的gtid信息

这个日志查看比上面会多一个,大家注意这个为分隔

恢复

set sql_log_bin=0;
source /tmp/gtid.sql
set sql_log_bin=1;
 

对此大家可以最后加一个整表备份,然后定时测试是否可以正常使用

相关文章:

mysql-恢复数据(日志管理)

前言 在mysql中我们有时候会出现误删除,或者其他的问题,我们可以通过mysql的日志进行恢复 操作 我们可以在mysql里面定义一个错误日志,方便我们可以排查是因为什么原因来解决mysql无法启动问题 ----------------------------------------…...

探索Unity:从游戏引擎到元宇宙体验,聚焦内容创作

unity是实时3D互动内容创作和运营平台,包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、…...

自动化测试类型与持续集成频率的关系

持续集成是敏捷开发的一个重要实践,可是究竟多频繁的集成才算“持续”集成? 一般来说,持续集成有3种常见的集成频率,分别是每分钟集成、每天集成和每迭代集成。项目组应当以怎样的频率进行集成,这取决于测试策略&…...

React 中组件通信的几种主要方式

一、父传子&#xff1a; 1. 传递多个属性 父组件可以通过 props 传递多个属性给子组件。 示例 // 子组件 function Son(props) {return (<div>This is Son, {props.name} - Age: {props.age}</div>); }// 父组件 function App() {const name This is App N…...

mint-ui Picker 显示异常

mint-ui Picker 显示异常 现象 最近一个老项目页面显示异常&#xff0c;使用mint-ui Picker显示异常,直接显示成了 数据对象&#xff0c;而不是具体travelName 字段 组件 mint-ui Picker 使用方式(vue方式) // template <mt-picker :slots"slots" value-key…...

深入理解 MySQL 中的日志类型及其应用场景

目录标题 MySQL 中的日志类型这么多,它们都有哪些作用?1.错误日志(Error Log)2.事务日志2.1 InnoDB Redo Log(重做日志)2.2 InnoDB Undo Log (撤消日志)3.查询日志(General Query Log)4.慢查询日志 (Slow Query Log)5.二进制日志(Binary Log)6.中继日志 (Relay Log)总结一下M…...

群控系统服务端开发模式-应用开发-上传配置功能开发

下面直接进入上传配置功能开发&#xff0c;废话不多说。 一、创建表 1、语句 CREATE TABLE cluster_control.nc_param_upload (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 编号,upload_type tinyint(1) UNSIGNED NOT NULL COMMENT 上传类型 1&#xff1a;本站 2&a…...

stm32——GPIO开发

目录 1、什么是GPIO 2、GPIO的作用 3、GPIO的基本结构 4、GPIO引脚的基本结构 5、GPIO端口模式的配置 1. 输入浮空&#xff08;Input Floating&#xff09; 2. 输入上拉&#xff08;Input Pull-Up&#xff09; 3. 输入下拉&#xff08;Input Pull-Down&#xff09; 4. …...

layui 自定义验证单选框必填

对于输入框类型必填验证&#xff0c;只需要在 input 输入框加入 lay-verify "required" 即可。但对于单选按钮这种特殊的该怎么办呢&#xff1f;layui 为我们提供了自定义验证。 1. 在单选按钮上添加自定义验证的名称 2. 验证规则如下 // 单选框自定义验证form.ve…...

Spring 设计模式之策略模式

Spring 设计模式之策略模式 策略模式构成部分java举例 策略模式 策略模式&#xff1a;允许定义一系列算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以互相替换&#xff0c;且算法的变化可以独立于使用它们的客户端。 构成部分 Context&#xff08;上下文&…...

苹果开发 IOS 证书生成步骤

前提条件 你手上有一台 Macbook你的苹果账号已被添加到开发人员中 证书创建步骤 打开 XCode 直接生成 p12证书生成后&#xff0c;就可在苹果开发者管理界面中看到你的证书记录登录苹果开发中心&#xff0c;创建 profiles 文件&#xff0c;并下载以上步骤即可&#xff0c;就这…...

DDR2 SDRAM(五)初始化

因为DDR2本质上只是更高级的一种SRAM&#xff0c;底层操作原理和SRAM是一样的&#xff0c;所以很多基础的东西就不再赘述了。 一、原理 在初始化之前&#xff0c;DDR2芯片需要先上电&#xff0c;芯片有多个需要提供的电压&#xff0c;其大小和顺序也有要求&#xff0c;这部分…...

Python工具箱系列(五十七)

图像分割与人脸识别 众所周知图像是由若干有意义的像素组成的&#xff0c;图像分割作为计算机视觉的基础&#xff0c;对具有现有目标和较精确边界的图像进行分割&#xff0c;实现在图像像素级别上的分类任务。图像分割可分为语义分割和实例分割两类&#xff0c;区别如下&#x…...

数据智能驱动金融策略优化:民锋智能分析技术的应用

在现代金融市场中&#xff0c;数据分析与智能化技术的结合为投资策略带来了全新机遇。民锋以智能分析技术为核心&#xff0c;帮助投资者在复杂的市场环境中做出高效决策。本文将深入探讨民锋智能分析技术如何驱动策略优化&#xff0c;为投资者带来更加智能化的支持。 #### 一、…...

1009:带余除法

【题目描述】 给定被除数和除数&#xff0c;求整数商及余数。此题中请使用默认的整除和取余运算&#xff0c;无需对结果进行任何特殊处理。 【输入】 一行&#xff0c;包含两个整数&#xff0c;依次为被除数和除数&#xff08;除数非零&#xff09;&#xff0c;中间用一个空格隔…...

Jmeter实际应用

环境准备 JDK1.8Jmeter 5.6.3 下载地址Jmeter 插件 下载地址 放到lib/ext下 常用命令 # 启动 sh jmeter# 集群模式下启动节点&#xff0c;不启动用不了集群 sh jmeter-server#生成ssl需要的证书, 这里会要求输入个密码&#xff0c;是要在jmeter中用的 keytool -import -ali…...

C++基础(11.AVL树的实现)

目录 AVL的概念&#xff1a; AVL树的实现&#xff1a; AVL树的结构&#xff1a; AVL树的插⼊&#xff1a; 平衡因⼦更新&#xff1a; 旋转&#xff1a; AVL树的其他功能: AVL树平衡检测: 测试代码*2: 源代码&#xff1a; KV结构&#xff1a; 源代码&#xff1a; AVL…...

c# 抽象方法 虚函数 使用场景

在C#中&#xff0c;抽象方法&#xff08;abstract method&#xff09;和虚函数&#xff08;virtual method&#xff09;都是用于实现多态性&#xff08;polymorphism&#xff09;的重要特性&#xff0c;但它们在使用上有一些关键的区别和各自的用途。 抽象方法&#xff08;Abs…...

大数据安全方案 验证

一、背景 文档用于记录配置 Kerberos 和 Ranger 后&#xff0c;对 HDFS、Hive 认证和鉴权的功能测试。 二、Kerberos 验证 2.1、验证功能 1&#xff0c;HDFS 认证 2.1.1、访问 HDFS Kerberos 验证前&#xff0c;访问 HDFS 失败。 Kerberos 验证后&#xff0c;访问 HDFS 成…...

电脑软件:推荐一款免费且实用的电脑开关机小工具

目录 一、软件简介 二、软件功能 三、软件特点 四、使用说明 五、软件下载 今天给大家推荐一款免费且实用的电脑开关机小工具KShutdown&#xff0c;有需要的朋友可以下载试一下&#xff01; 一、软件简介 KShutdown是一款精巧且实用的定时自动关机小工具&#xff0c;对于…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...