MySQL解决 恢复从备份点到灾难点之间数据(不收藏找不到了)

news2024/9/22 21:35:09

CSDN 成就一亿技术人!

今天分享一期 mysql中 备份之后发生灾难造成数据丢失 那么如何恢复中间的数据呢?

数据库数据高于一切(任何数据是不能丢失的)

CSDN 成就一亿技术人!


目录

1.准备测试数据库

2.备份数据库

观察备份细节

3.(模拟备份点到灾难点的数据)

4.恢复测试

1.拷贝所有二进制文件

2.停止数据库

3.清理环境(模拟丢失)

4.还原备份前的数据

5.恢复第3(模拟的数据)

6.测试查看


MySQL 数据库高于一切,是信息时代不可或缺的数据管理利器,为业务的成功和创新提供了坚实的基础。

普遍所使用的工具来备份mysql 但是都只能恢复备份之前数据

本期试验所使用的工具和文件:mysqldump+binlog 二进制文件

1.准备测试数据库

mysql> create database test;            创建库
Query OK, 1 row affected (0.00 sec)

mysql> create table t1(id int);        创建表
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t1 values(1),(2);        写入数据
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from t1;        查看表
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

2.备份数据库

备份所有的数据库
[root@192 ~]# mysqldump -uroot -p" " --all-databases --single-transaction --master-data=2 --flush-logs > /backup/mysql-all.sql
   
-p'输入你的密码'
--all-databases
all所有数据库

--single-transaction
保证数据的可用性 就是指不关机的备份(备份的时候数据库还是正常使用的)

--master-data=2		
以注释的方式记录日志
参数有两个(1,2)2的话就是注释日志 日志里边都会加上#  1就是开启
二进制日志非常的重要 很强大 可以还原备份文件里没有备份上的数据(所以二进制日志一定要记录下来)

--flush-logs
切断日志 也就是日志轮转

观察备份细节

vim/backup/备份的sql文件

你会发现里边很多   LOCK TABLES `test` WRITE	

LOCK TABLES 是 MySQL 中的一个语句,用于锁定一个或多个表,
以确保在执行特定操作时其他会话不能修改这些表。在 mysqldump 中,默认情况下,
备份操作会使用 --lock-tables 选项,这会导致在备份的整个过程中锁定要备份的表
。WRITE 关键字表示写锁,即其他会话不能写入被锁定的表。

这个锁机制确保了备份的一致性,因为在备份期间,数据库表的状态保持不变。
但是,这也意味着在备份过程中,其他会话可能会被阻塞,直到备份完成。
这可能对具有高并发的生产环境造成一些影响。

3.(模拟备份点到灾难点的数据)

进入测试数据库
我进入test数据库 创建一个t2表
mysql> create table t2;
ERROR 1113 (42000): A table must have at least 1 column
mysql> create table t2(id int);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t2 values(1),(2),(3);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t2;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)

4.恢复测试

1.拷贝所有二进制文件

[root@192 ~]# cp /var/lib/mysql/*bin* ~
[root@192 ~]# ls
192-bin.000001  192-bin.index    initial-setup-ks.cfg  模板  图片  下载  桌面
192-bin.000002  anaconda-ks.cfg  公共                  视频  文档  音乐

2.停止数据库

systemctl stop mysqld

3.清理环境(模拟丢失)

mysql> drop table t1;			删除表
Query OK, 0 rows affected (0.00 sec)

mysql> drop database test;			删除整个数据库test
Query OK, 1 row affected (0.00 sec)
mysql> show databases;		查看一下确实删掉了
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

4.还原备份前的数据

[root@192 ~]# mysql -uroot -p' ' < /backup/mysql-all.sql
查看test 中t1表		(数据都还原回来了)
mysql> select * from test.t1;
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

做到这里我们使用mysqldump还原数据库已经成功!!!!但是仅仅还原的是备份前的所有数据
 

第3.(模拟备份点到灾难点的数据)这些数据如何恢复?

我们在备份之后在test数据库创建了一个t2的表 里边插入了 1 2 3三条数据

此刻我们查看test数据库
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)
因为备份之前test数据库中只有t1 表单

5.恢复第3(模拟的数据)

我们需要用到二进制文件来进行恢复

[root@192 ~]# mysqlbinlog 192-bin.000002 --start-position=154 | mysql -uroot -p" "
192-bin.000002

还原备份之后的二进制 有多少个二进制跟多少个二进制(只要是备份后的二进制都行) 
 --start-position=154
 开始还原 从154这一行开始
 | mysql -uroot -p" "
 还原的数据给mysql	-p后边跟上你的密码

6.测试查看

数据恢复成功
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
| t2             |
+----------------+
mysql> select * from t2;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.01 sec)

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

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

相关文章

CCF-CSP 202312-1 仓库规划(Java、C++、Python)

文章目录 仓库规划问题描述输入格式输出格式样例输入样例输出子任务 满分代码JavaCPython 仓库规划 问题描述 西西艾弗岛上共有 n n n 个仓库, 依次编号为 1 ⋯ n 1 \cdots n 1⋯n 。每个仓库均有一个 m m m 维向量的位置编码, 用来表示仓库间的物流运转关系。 具体来说,…

机器学习 | 掌握 K-近邻算法 的理论实现和调优技巧

目录 初识K-近邻算法 距离度量 K值选择 kd树 数据集划分 特征预处理 莺尾花种类预测(实操) 交叉验证与网格搜索 初识K-近邻算法 K-近邻算法&#xff08;K-Nearest Neighbor&#xff0c;KNN&#xff09;是一种基本的分类和回归算法。它的基本思想是通过找出与新对象最近…

git远程仓库基本操作

目录 gitremote &#xff08;查看远程仓库&#xff09; git remote add [仓库名] [url] git clone [url]&#xff08;克隆远程仓库到本地&#xff09; git push [名][分支名]&#xff08;提交到远程仓库&#xff09;​编辑 git pull [名][分支名]从远程仓库拉取​编辑 注意操作…

SpringBoot拉取高德行政区域数据

SpringBoot拉取高德行政区域数据 一、账号申请 1.整体流程 行政区域文档&#xff1a;https://lbs.amap.com/api/webservice/guide/api/district 整体流程可参考&#xff1a;https://lbs.amap.com/api/webservice/guide/create-project/get-key 2.注册账号 注册地址&#…

js padEnd方法介绍笔记

padEnd() 是 JavaScript 字符串的方法之一&#xff0c;它用于在当前字符串的末尾添加指定数量的字符&#xff0c;直到字符串达到指定的长度。 padEnd() 方法接受两个参数&#xff1a; 目标长度和要添加的填充字符。 如果当前字符串的长度已经等于或超过目标长度&#xff0c;则不…

你应该仅仅把useMemo作为性能优化的手段

文章概叙 本文主要通过几个简单的例子&#xff0c;讲解下useMemo这个hook&#xff0c;给诸君参考&#xff0c;也是给我自己做一个记录 关于useMemo useMemo是一个React Hook&#xff0c;它在每次重新渲染的时候能够缓存计算的结果。 相比于其他很常用的hook&#xff0c;如u…

LPC804开发(7.SPI使用)

1.前言 原本说写ADC&#xff0c;但是考虑到6已经给了串口&#xff0c;算了算了&#xff0c;还是把SPI和IIC放到7和8吧。整体用下来感觉NXP的协议比ST和TI开发的完善的&#xff0c;都可以走硬件&#xff0c;比较完善的底层开发&#xff0c;没有硬伤&#xff0c;那么接下来我们来…

教你一招轻松把模糊的照片变高清

亲爱的朋友们&#xff0c;你们是否也曾经遇到过这样的问题——精心拍摄的照片或珍藏已久的图片突然变得模糊不清&#xff0c;让人心情郁闷&#xff1f;别担心&#xff0c;我发现了解决这个问题的秘诀&#xff01;借助一些专业的图片修复工具&#xff0c;那些模糊的瞬间可以重新…

react实现滚动到顶部组件

新建ScrollToTop.js import React, { useState, useEffect } from react; import ./ScrollToTop.css;function ScrollToTop() {const [isVisible, setIsVisible] useState(true);// Show button when page is scorlled upto given distanceconst toggleVisibility () > {…

一分钟在SpringBoot项目中使用EMQ

先展示最终的结果: 生产者端: RestController RequiredArgsConstructor public class TestController {private final MqttProducer mqttProducer;GetMapping("/test")public String test() {User build User.builder().age(100).sex(1).address("世界潍坊渤…

Wireshark网络协议分析 - UDP协议

在我的博客阅读本文 文章目录 1. 基础2. 实战2.1. 用Go写一个简单的UDP服务器与客户端2.2. Wireshark抓包分析 3. UDP与TCP的区别4. 参考资料 1. 基础 UDP包的数据结构&#xff1a; 2. 实战 2.1. 用Go写一个简单的UDP服务器与客户端 我们这里使用Golang写了一个简单的9830端…

docker由浅入深

一、什么是docker docker 顾名思义就是轮船的意思&#xff0c;轮船我们知道是通过集装箱运载货物的东西&#xff0c;那么docker其实也是类似的东西&#xff0c;只是装载的是虚拟的运行程序罢了。其中集装箱在docker里面被称为container&#xff08;后面以容器称之&#xff09;…

林浩然的Python奇遇记:从小白到科学界的编程魔法师

林浩然的Python奇遇记&#xff1a;从小白到科学界的编程魔法师 Lin Haoran’s Python Adventure: From Novice to Programming Sorcerer in the Scientific Realm 在那个平凡的午后&#xff0c;我们的主角林浩然——一个对编程一窍不通但对世界充满好奇的物理学大二学生&#x…

qiankun子应用静态资源404问题有效解决(遇到了http请求静态文件404、css文件引用图片无法显示、svg图片转换成 base64无法显示等问题)

在&#x1f449;&#x1f3fb; qiankun微前端部署&#x1f448;&#x1f3fb;这个部署方式的前提下&#xff0c;遇到的问题并解决问题的过程 >> 问题现象 通过http请求本地的静态json文件404 css中部分引入的图片无法显示 >> 最开始的解决方式 在&#x1f449;…

Linux第36步_创建正点原子的TF-A工作区

创建正点原子的TF-A工作区&#xff0c;目的是想查看正点原子的设备树文件“stm32mp157d-atk.dts”和设备树头文件“stm32mp157d-atk.dtsi”&#xff0c;了解设备树是什么样子&#xff0c;为后期基于“ST公司的源码”创建自己的设备树提供参考&#xff0c;同时也是为了学习移植u…

飞桨大模型分布式训练技术

今天我为大家介绍飞桨大模型分布式训练技术&#xff0c;内容分为以下几个部分&#xff1a; 首先&#xff0c;我会介绍大模型训练面临的重点难题&#xff1b;然后&#xff0c;为大家介绍飞桨在大模型训练领域的特色分布式训练技术和优化方案&#xff1b;最后&#xff0c;伴随着…

NeRF:神经辐射场复杂场景的新视图合成技术

NeRF&#xff1a;神经辐射场复杂场景的新视图合成技术 NeRF&#xff1a;神经辐射场复杂场景的新视图合成技术项目背景与意义如何运行&#xff1f;快速开始更多数据集 预训练模型方法与实现结语服务 NeRF&#xff1a;神经辐射场复杂场景的新视图合成技术 在计算机视觉领域&…

工业物联网网关如何实现工业设备的远程运维?-天拓四方

随着工业4.0和智能制造的快速发展&#xff0c;工业设备的远程运维已经成为提高企业生产效率和降低运营成本的重要手段。工业物联网网关作为这一过程中的关键组件&#xff0c;发挥着不可或缺的作用。本文将重点探讨工业物联网网关如何实现工业设备的远程运维&#xff0c;并结合实…

网络和Linux网络_15(IO多路转接)reactor编程_服务器+相关笔试题

目录 1. reactor的服务器 1.1 Sock.hpp 1.2 加协议分割报文 1.3 序列化和反序列化 Protocol.hpp main.cc Epoll.hpp TcpServer.hpp 2. 相关笔试题 答案及解析 本篇完。 1. reactor的服务器 Log.hpp和以前一样&#xff0c;因为下面要写ET模式所以Sock.hpp加了一个把…

[Python] 什么是集成算法,什么是随机森林?随机森林分类器(RandomForestClassifier)及其使用案例

什么是集成算法&#xff1f; 集成算法是一种机器学习方法&#xff0c;它将多个基本的学习算法&#xff08;也称为弱学习器&#xff09;组合在一起&#xff0c;形成一个更强大的预测模型。集成算法通过对基本模型的预测进行加权平均或多数投票等方式&#xff0c;来产生最终的预…