关系型数据库mysql(6)备份与恢复

news2024/12/26 22:47:59

一.数据备份的重要性

(1)在生产环境中,数据的安全性至关重要

(2)任何数据的丢失都可能产生严重的后果

(3)造成数据丢失的原因

  • 程序错误
  • 人为操作失误
  • 运算错误
  • 磁盘故障
  • 灾难(如火灾,地震)和盗窃

扩展:容灾

容灾系统是指,在相隔较远的异地,建立两套或者多套功能相同的IT系统,相互之间可以进行健康状态的监控和功能切换,当一处系统因为意外(如,火灾、地震、服务器人为破坏等)停止工作后,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。

二. 数据库备份的分类

从物理与逻辑的角度,备份可分为

  • 物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份

物理备份方法:

(1)冷备份(脱机备份):是在关闭数据库的时候进行的

把数据库用systemctl stop关闭的时候进行备份

(2)热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件

从数据库的日志文件进行备份(不建议用这种方式去备份)

(3)温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作

温备份不影响数据库的运行,但是你不能访问

  • 逻辑备份:对数据库逻辑组件(入:表等数据库对象)的备份

这种类型的备份适用于可以编辑数据值或表结构    

从数据库的备份策略角度,备份可以分为

  • 完全备份:每次对数据库进行完整的备份

完全备份过程

每次都会进行完全备份,会导致备份文件占用巨大的空间,并且有大量的重复数据

生产环境中只适合第一次,不适合天天备份

恢复时直接把文件导入进去即可

  • 差异备份:备份自从上次完全备份之后被修改过的文件

差异备份过程

上次差异备份,都会备份上一次完全备份之后的数据,可能会出现备份重复数据,导致占用大量额外的磁盘空间

恢复时,先回复完全备份,再回复导入差异备份的数据

  • 增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份

增量备份过程

每次增量备份的数据都是备份在上一次完全备份或者增量备份之后的数据,不会出现重复数据,也不会占用额外的磁盘空间

恢复时 需要 完全恢复 再增量恢复(次序)

备份方式的比较

备份方式完全备份时状态第一次添加内容备份内容第二次添加内容备份内容
完全备份表1+表2表3表1+表2+表3表4表1+表2+表3+表4
差异备份表1+表2表3表3表4表3+表4
增量备份表1+表2表3表3表4表4

完全备份创建多少都会把原来的数据再备份一遍

差异备份会把上一次备份多出来的数据再备份一遍

增量备份都会备份每一份多出来的的数据

选择备份的策略

备份方式备份策略频率
完全备份一周做一次完全备份。在不需要提供业务的时间例如PM 10点 AM 5:00,最好在凌晨1~5点
差异备份选择特定的场景进行备份
增量备份1/2/3天一次增量备份

我们为了数据的安全一般会放在NFS中

总结 

完全备份差异备份增量备份
执行顺序每次完全备份会备份之前完全备份的数据,会出现重复数据每次执行差异备份会备份之前每次的差异备份每一次增量备份的数据都是备份上一次增量备份后新增的数据
占用磁盘空间占用大量的磁盘空间占用少量额外的磁盘空间占用极少量的磁盘空间
数据恢复

把完全备份的文件导入即可

恢复速度很快

先恢复完全备份数据,再导入差异备份数据先恢复完全备份数据,再恢复增量备份数据(需要按照次序进恢复)

 

三.常见的备份方法

物理冷备

  • 备份时数据库处于关闭状态,直接打包数据库文件
  • 备份速度快,恢复时也是最简单的

专用备份工具mudump或mysqlhotcopy

  • mysqldump常用的逻辑备份工具
  • mysqlhotcopy仅拥有备份MyLSAM和ARCHIVE表

启用二进制日志进行增量备份

  • 进行增量备份,需要刷新二进制文件

Mysql支持增量备份,进行增量备份时必须启用二进制日志。二进制日志文件为用户提供复制,对执行的数据库更改所需的信息进行恢复。如果进行增量备份(包含上次完全备份或增量备份以来发生的数据修改),需要刷新二进制日志

第三方工具备份

  • 免费的MYSL热备份软件Percona XtraBackup

完全备份

  • 是对整个数据库、数据库结构和文件结构的备份
  • 保存的时备份完成时刻的数据库
  • 是差异备份和增量备份的基础
完全备份的优点
  • 备份与恢复操作简单方便
完全备份的缺点
  • 数据存在大量的重复
  • 占用大量的备份空间
  • 备份与回复时间长
完全备份的分类
物理冷备份与恢复
  • 关闭MYSQL数据库
  • 使用tar命令直接打包数据库文件夹
  • 直接替换现有MYSQL目录即可
mysqldump备份与和恢复
  • MySQL自带的备份工具,可方便实现对MYSQL的备份
  • 可以将指定的库,表导入为SQL脚本
  • 使用命令mysql导入备份的数据

导出使用的是Mysqldump;导入使用的是Mysql命令 

四.Mysql数据库完全备份操作

InnoDB 存储引擎的数据库在磁盘上存储成三个文件:

  • db.opt(表属性文件)
  • 表名.frm(表结构文件)
  • 表名.ibd(表数据文件)

环境准备-创建数据库和表,插入若干条记录

use test;
create table test01(id int(4) not null auto_increment primary key,
name varchar(10) not null,
age char(10) not null,
hobby varchar(50));
 
 
insert into test01 values(1,'zhangsan',22,'xizao');
insert into test01 values(2,'lisi',21,'xijiao');
insert into test01 values(3,'wangwu',20,'anmo');
insert into test01 values(4,'zhaoliu',19,'tangtou');
 
select * from test01;

物理冷备份与恢复

方法一 
先关闭数据库

备份
[root@localhost mysql]#pwd
/usr/local/mysql
[root@localhost mysql]#tar zcvf data.tar.gz data/
 
[root@localhost mysql]#mv data.tar.gz /opt
 

 mysql下的data就是我们的数据

 

 这时mysql下多了我们备份的data.tar.gz

将备份的数据移动到我们指定的目录 

 

恢复

 将备份的数据解压回源目录

 这时我们发现原数据又回来了

方法二
备份: 
使用tar命令直接打包数据库文件夹
yum -y install xz
#压缩备份
tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/
 
3、直接替换现有MySQL目录即可
mv /usr/local/mysql/data/ /opt/
 
4、解压恢复
tar Jxvf /opt/mysql_all_2024-03-25.tar.xz  -C ./
cd /usr/local/mysql/data
mv /usr/local/mysql/data/* ./

 

压缩备份

 

成功得到备份 

[root@localhost mysql]#ls
[root@localhost mysql]#mkdir data
[root@localhost mysql]#ls
data
[root@localhost mysql]#pwd
/home/mysql
[root@localhost mysql]#tar Jxvf /opt/mysql_all_2024-03-25.tar.xz -C ./
 
 

这时我们发现在mysql下创建的data目录里面没有数据

 

 解压到data目录下

 

解压的移动到指定目录下 

 这时我们发现mysql目录下有了我们的data数据

mysqldump 备份与恢复 

 完全备份一个或多个完整的库(包括其中所有的表)
mysqldump -u root -p[密码] --databases 库名1 [库名2] ... > /备份路径/备份文件名.sql    
 
#导出的就是数据库脚本文件
mysqldump -uroot -p123 --databases test > /opt/test.sql

mysqldump -u root -p123456 --databases mysql test > /opt/test_mysql.sql

 备份一个test库

 备份mysql和test两个库

 查看

完全备份MySQL服务器中所有的库 
mysqldump -u root -p[密码] --all-databases > /备份路径/备份文件名.sql

mysqldump -u root -p123456 --all-databases > /opt/all.database.sql

备份所有的库

查看

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

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

相关文章

Selenium 自动化 —— 切换浏览器窗口

更多内容请关注我的 Selenium 自动化 专栏: 入门和 Hello World 实例使用WebDriverManager自动下载驱动Selenium IDE录制、回放、导出Java源码浏览器窗口操作 平时我们在使用浏览器时,通常会打开多个窗口,然后再多个窗口中来回切换&#xf…

SuperGluePretrainedNetwork 详细解读

目录结构展示了SuperGluePretrainedNetwork项目的简化版布局。这是一个关于使用SuperGlue算法进行图像配对的深度学习项目,主要包括预训练的模型和执行配对的脚本。 demo_superglue.py demo_superglue.py脚本的主要作用是展示SuperGlue预训练网络在图像对上进行特征…

YZ系列工具之YZ09: VBA_Excel之读心术

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套一部VBA手册,教程分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的…

springboot项目学习-瑞吉外卖(4)

1.任务 这一节主要的任务是解决文件的上传和下载功能 2.文件上传 概念:将本地的图片上传到浏览器上面 点击文件上传,前端就会发送如上的请求,服务端应该根据URL和请求方法来处理请求 CommonController类: RestController Slf4j …

unity学习(66)——控制器Joystick Pack优化

Joystick Pack这种重力带惯性不利于正常开发。决定进行优化。有一种万事俱备只欠东风的感觉。 源代码如下: 1.在脚本中找到轮盘所输出的方向值 2.把方向的改变值加到鸣人模型身上。 2.1控制器脚本中添加model变量 2.2在unity中赋值 2.3代码中修改位置 using Syst…

咕炮课堂Java架构师课程

课程介绍 主要针对1到5年及以上工作经验的开发人员,提供互联网行业热门技术的Java架构师专题培训,由业内技术大牛,行业及实战经验丰富的讲师进行技术分享。内容涵盖redis,mongodb,dubbo,zookeeper,kafka 高并发、高可用、分布式、高性能、并…

SSM整合遇到的问题,非常干货,希望能帮助到您~

你们好,我是金金金。 无法自动装配 配置类已经配置了扫描 那是什么原因导致? 解决 很明显位置都不在一起,需要更改。 结果类型不匹配select id“selectEmployeeByCondition” 什么原因导致? 这个是因为我建立了很多子模块 名字…

360奇酷刷机 360刷机助手 QIKU Download Assistant

360奇酷刷机 360刷机助手 QIKU Download Assistant 破 解 360手机刷机资源下载链接:360rom.github.io 参考:360手机-360刷机360刷机包twrp、root 360奇酷刷机:360高通驱动安装 360手机刷机驱动;手机内置,可通过USB文件…

Spark spark-submit 提交应用程序

Spark spark-submit 提交应用程序 Spark支持三种集群管理方式 Standalone—Spark自带的一种集群管理方式,易于构建集群。Apache Mesos—通用的集群管理,可以在其上运行Hadoop MapReduce和一些服务应用。Hadoop YARN—Hadoop2中的资源管理器。 注意&…

(1) 易经与命运_学习笔记

个人笔记,斟酌阅读 占卦的原理 三个铜板,正面是3,反面2,三个一起转,得出6,7,8,9 数字象6老阴7少阳8少阴9老阳 生数和成数 生数和成数应该说出自《河图》。其中一二三四五为生数,六七八九十为成数。 生…

程序员实用学习平台,必看榜!

只要卷不死,就往死里卷! 高中老师宣扬的励志鸡汤,仿佛走出了校园踏入社会仍然适用。 “出走半生,归来仍是少年。”emm....... 如今比麻花还卷的社会,学到老才能活到老啊~尤其咱们IT这么优胜劣汰的行业,自是…

计算机408炸了!大多数人都栽在这门课上

组成原理>>数据结构>操作系统>计算机网络 在本科时,我在学习组成原理之前已经学过数字电路和模拟电路,但在接下来学习组成原理时,我依然感到困难。也许是因为自己理解能力不足,总觉得难以掌握,甚至在考研…

redis实际应用场景及并发问题的解决

业务场景 接下来要模拟的业务场景: 每当被普通攻击的时候,有千分之三的概率掉落金币,每回合最多爆出两个金币。 1.每个回合只有15秒。 2.每次普通攻击的时间间隔是0.5s 3.这个服务是一个集群(这个要求暂时不实现) 编写接口&…

【科研基础】分布式信源编码与中继通信

[1] Bian, Chenghong, et al. “Deep joint source-channel coding over cooperative relay networks.” arXiv preprint arXiv:2211.06705 (2022). [2] Bian, Chenghong, et al. “Process-and-Forward: Deep Joint Source-Channel Coding Over Cooperative Relay Networks.”…

Linux系统 安装docker

安装: 1、Docker要求CentOS系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2、更新yum包: sudo yum -y update 3、安装需要的软件包,yum-util 提供yum-config-manager功能,另外…

PyCharm环境下Git与Gitee联动:本地与远程仓库操作实战及常见问题解决方案

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言下载及安装GitGit的使用设置用户签名设置用户安全目录Git基本操作Git实操操作 Pyc…

Redis 大 Key 对持久化有什么影响?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) Redis 的持久化方式有两种:AOF 日志和 RDB 快照。 所以接下来,针对这两种持久化方式具体分析分析 大 Key 对 AOF 日志的影响 先说说 AOF 日志三种写回磁盘的策略 Redis 提供了 3…

SpringBoot3+JPA+MySQL实现多数据源的读写分离(基于EntityManagerFactory)

1、简介 在Spring Boot中配置多个数据源并实现自动切换EntityManager,这里我编写了一个RoutingEntityManagerFactory和AOP(面向切面编程)的方式来实现。 这里我配置了两个数据源:primary和secondary,其中primary主数…

Unity连接MySQL踩坑,问题处理记录

用的unity2021版本,MySQL是官方下载的最新版8.0.36. 安装MySQL时,过去如果安装过,一定要删干净,单纯的卸载不行,网上有很多教程。 MySQL安装完成后,将安装目录的MySql.Data.dll文件放入unity项目的Plugin…

【Leetcode每日一题】模拟 - 替换所有的问号(难度⭐)

1. 题目解析 题目链接:1576. 替换所有的问号 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 遍历字符串:从左到右逐个处理字符。 处理问号字符:对于每个问号字符,我们需…