mysql数据恢复,mysql数据备份,详细聊聊mysql数据备份与恢复

news2024/10/6 16:17:15

文章目录

  • 写在前面
  • 数据备份与恢复
    • 1、全量备份
      • 模拟全量备份与恢复
      • 全量备份的缺点
    • 2、增量备份
      • 模拟增量备份与恢复
      • 增量备份注意事项
  • 总结

写在前面

作为互联网开发人员来说,数据安全性一直排在第一位的重中之重。

mysql作为关系型数据库的一个巨头,其备份与恢复更是大家所关心的。

今天就详细聊聊,mysql如何备份,以及被“删库跑路”之后如何恢复。

数据备份与恢复

1、全量备份

最简单的备份方式就是全量备份。

全量备份就是将数据库整库备份到磁盘中,恢复的时候再将文件读取到数据库中。

mysql可以使用mysqldump命令来执行全量备份。

模拟全量备份与恢复

1、准备数据

CREATE TABLE `stu` (
  `id` int NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

insert into stu values('1', '张一');
insert into stu values('2', '张二');
insert into stu values('3', '张三');
insert into stu values('4', '张四');
insert into stu values('5', '张五');

2、全量备份

将mytest数据库全量备份。

mysqldump -uroot -p mytest > mytest.sql
-- 输入密码之后就会生成mytest.sql

3、删除表所有数据

truncate table stu;

4、数据恢复

mysql -uroot -p mytest < mytest.sql
-- 输入密码之后,就会恢复备份时刻的数据库全部信息

全量备份的缺点

全量备份的代价非常高。

1、数据库数据多的话,占用磁盘空间非常大。
2、每次备份需要拷贝所有数据,备份过程中占用的CPU、磁盘等资源,会严重影响系统运行。
3、为了保证数据一致性,还可能锁表,导致备份期间许多业务进入停用状态。

所以说,我们不能经常进行全量备份,基本每天一次就可以了。

这也就意味着,如果数据库的数据丢失,只能恢复到最近一次全量备份的时间点,这期间发生的数据还是丢失了。

2、增量备份

MySQL 自带了 Binlog,就是一种实时的增量备份。Binlog 里面记录的就是 MySQL 数据的变更的操作日志,开启 Binlog 之后,我们对 MySQL 中的每次更新数据操作,都会被记录到 Binlog 中。

Binlog 是可以回放的,回放 Binlog,就相当于把之前对数据库所有数据更新操作按照顺序重新执行了一遍,回放完成之后数据自然就恢复了。这就是 Binlog 增量备份的基本原理。很多数据库都有类似于 MySQL Binlog 的日志,原理和 Binlog 是一样的,备份和恢复方法也是类似的。

首先我们看mysql是否开启了binlog:

show variables like '%log_bin%';
show master status;

在这里插入图片描述
在这里插入图片描述

可以看到当前这个数据库已经开启了 Binlog,log_bin_basename 表示 Binlog 文件在服务器磁盘上的具体位置。然后用“show master status”命令可查看当前 Binlog 的状态,显示正在写入的 Binlog 文件,及当前的位置。假设我们每天凌晨用 mysqldump 做一个全量备份,然后开启了 Binlog,有了这些,我们就可以把数据恢复到全量备份之后的任何一个时刻。

模拟增量备份与恢复

1、准备数据

CREATE TABLE `stu` (
  `id` int NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

insert into stu values('1', '张一');
insert into stu values('2', '张二');
insert into stu values('3', '张三');
insert into stu values('4', '张四');
insert into stu values('5', '张五');

2、随便插入几条数据

insert into stu values('6', '张6');
insert into stu values('7', '张7');
insert into stu values('8', '张8');
insert into stu values('9', '张9');
insert into stu values('10', '张十');

3、数据删除

truncate table stu;

4、通过全量备份,恢复数据到备份时刻

mysql -uroot -p mytest < mytest.sql
-- 输入密码之后,就会恢复备份时刻的数据库全部信息

5、我们发现,后来insert的五条数据还没有恢复,此时用增量备份恢复

mysqlbinlog --start-datetime "2022-12-12 02:43:00" --stop-datetime "2022-12-12 02:46:00" /var/lib/mysql/mysql-bin.000005 | mysql -uroot -p

6、此时数据已经恢复

增量备份注意事项

恢复数据时,一定要恢复执行truncate语句之前的时间,否则binlog会将执行的truncate一起执行。
所以,恢复时一定要搞清楚数据删除的时间节点。

在回放 Binlog 的时候,指定的起始时间可以比全量备份的时间稍微提前一点儿,确保全量备份之后的所有操作都在恢复的 Binlog 范围内,这样可以保证恢复的数据的完整性。
回放 Binlog 的操作是具备幂等性的,重复回放的那部分 Binlog 并不会影响数据的准确性,所以binlog提前一点多恢复是没问题的。

总结

发生删库跑路,不要慌,还是可以恢复数据的。

正常来说全量备份+binlog就可以恢复所有的数据,但是数据安全性可并不止这些。

“不要把所有的鸡蛋放在同一个篮子中”,无论是全量备份还是 Binlog,都不要和数据库存放在同一个服务器上。最好能做到不同机房,甚至不同城市,离得越远越好。这样即使出现机房着火、光缆被挖断甚至地震也不怕。

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

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

相关文章

从GNU/Linux看国产操作系统的安全可控性

作者&#xff1a;IT圈黎俊杰 在信创的春风下&#xff0c;做为IT基础软件三驾马车之一的操作系统&#xff0c;自然是国产化替代的重点&#xff0c;再加上一直以来被大家当成”免费RedHat Enterprise Linux“的CentOS因被redhat收购&#xff0c;并宣布于2021年12月31日起在停止维…

SpringBoot+SpringCloud微服务搭建全过程(一)

一&#xff1a;什么是SpringBoot 1. SpringBoot不是一个全新的框架,而是对Spring框架的一个封装。所以&#xff0c;以前Spring可以做的事情&#xff0c;现在用SpringBoot都可以做。 2. SpringBoot整合了很多优秀的框架&#xff0c;用来简化Spring应用搭建和开发过程&#xff…

java项目_第171期ssm房屋租赁系统_计算机毕业设计

java项目_第171期ssm房屋租赁系统_计算机毕业设计 【源码请到下载专栏下载】 今天分享的项目是《ssm房屋租赁系统》 该项目分为2个角色&#xff0c;管理员和用户。 用户可以浏览前台,查看房屋租赁情况&#xff0c;并且进行租赁。 还可以登录到后台&#xff0c;进行租赁订单管理…

【20221212】【每日一题】一和零

给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是集合 y 的 子集 。 思路&#xff1a;背包有两个维度&#xff1a;m、n。不…

【工作项目总结】交易系统

写工作项目总结的目的就是,明明自己工作中负责了一些模块也写了很多代码,解决了不少坑。但是面试的时候,总是记不起来在自己过往做的项目中,该项目的具体亮点难点分别是什么,有哪些令人印象深刻的问题,以及是如何解决它的。那么记录问题与解决思维就是我创作这个工作复盘…

C#连接蓝牙设备

看过各种博主的文章&#xff0c;发现基本上都是属于误人子弟的狗屁文章&#xff0c;踩过各种坑最终实现了此功能。 1.思路 电脑蓝牙和蓝牙模块配对连接 和我们平时正常连接蓝牙设备一样&#xff0c;需要先搜索附近的蓝牙设备&#xff0c;然后根据设备名来选择要连接的蓝牙模块…

VSCODE 系列(六)使用Plantuml插件制作UML类图

文章目录前言下载和安装支持文件格式支持绘制类型导出语法申报要素UML类图关系参考例子参考前言 软件设计中&#xff0c;有好几种图需要画&#xff0c;比如流程图、类图、组件图等&#xff0c;我知道大部分人画流程图一般都会用微软的visio绘制&#xff0c;visio画图有个不好的…

[附源码]计算机毕业设计高校实验室仪器设备管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

Java学习笔记 --- 反射

一、反射机制 Java Reflection 1、反射机制允许程序在执行期间借助于 ReflectionAPI取得任何类的内部信息&#xff08;比如成员变量&#xff0c;构造器&#xff0c;成员方法等&#xff09;&#xff0c;并能操作对象的属性及方法。反射在设计模式和框架底层都会用到 2、加载完…

数学基础从高一开始6、全称量词与存在量词

数学基础从高一开始6、全称量词与存在量词 目录 数学基础从高一开始6、全称量词与存在量词 全称量词 存在量词 1.判断命题的真假 2.判断命题的真假 阅读下列两组命题&#xff0c;语言上有什么特点? A组&#xff1a; (1)对任意一个x∈Z&#xff0c;2x1是整数; (2)每一个素…

Pod使用进阶

Pod使用进阶 封面 写在前面 语雀上阅读效果更佳&#xff0c;请访问如下地址&#xff1a; 197 Pod使用进阶 语雀 《197 Pod使用进阶》 1、Pod 资源配置 实际上上面几个步骤就是影响一个 Pod 生命周期的大的部分&#xff0c;但是还有一些细节也会在 Pod 的启动过程进行设置&…

Hive 计算用户留存率(次日,3日,N日)

文章目录什么是用户留存率&#xff1f;创建数据源计算留存率计算 N 日的留存率什么是用户留存率&#xff1f; 用户留存率是指在特定时间段内&#xff0c;用户在使用某个产品或应用程序后&#xff0c;再次使用该产品或应用程序的比例。 它可以帮助公司了解用户是否喜欢他们的产…

2022 第十四届蓝桥杯模拟赛第二期题目题解(比赛时使用方法)

目录 第一题&#xff1a;最小的2022 第二题&#xff1a;经过天数 第三题&#xff1a;特殊的十六进制数 第四题&#xff1a;矩阵的最小路径 第五题&#xff1a;质数拆分 第六题&#xff1a;拷贝时间 第七题&#xff1a;单词去重 第八题&#xff1a;最短回文串 第九题&a…

[附源码]Node.js计算机毕业设计大学校园二手教材与书籍Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

GoWeb 优雅的 ORM 框架之 GORM,实现 MySQL 数据库的增删改查等操作(附案例全代码)

1、前言 什么是web应用,Web应用程序简单流程如下图所示 通过上图我们发现,我们 GoWeb 实战项目还缺少最后关键的环节数据库。那么如何使用 GO 语言操作数据库并完成增删改查等操作是我们今天学习的目标。 GoWeb 的 MVC 入门实战案例,基于 Iris 框架实现(附案例全代码) …

[附源码]Python计算机毕业设计Django的连锁药店销售管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

11.校验token和解析token获取数据代码优化

校验token和解析token获取数据代码优化 解决方案 基于ThreadLocal 拦截器的形式统一处理 一、使用拦截器进行统一身份鉴权 1.1定义拦截器 package com.tanhua.server.interceptor;import com.tanhua.commons.utils.JwtUtils; import org.springframework.web.servlet.Handl…

[附源码]Nodejs计算机毕业设计基于java旅游信息分享网站Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

二、物理层(一)通信基础

目录 1.1通信基础概念 1.2传输方式 1.2.1串行传输和并行传输 1.2.2单工通信、半双工通信和全双工通信 1.3编码与调制 1.3.1数字数据编码为数字信号 1.3.2数字数据调制为模拟信号 1.3.3模拟信号编码为数字信号 1.3.4模拟数据调制为模拟信号 1.4电路交换、报文交换与分…

装了就不舍得卸载,4款电脑必装软件,功能实用又免费

下面4款电脑软件&#xff0c;每一个都是你绝对能用得上的神器&#xff0c;可遇不可求。 1、AutoOff AutoOff是一款完全免费&#xff0c;纯绿色的电脑操作定时工具&#xff0c;功能强大且实用&#xff0c;体积不到1M&#xff0c;非常小巧&#xff0c;支持自动关机、重启、休眠、…