数据备份和恢复
数据备份和恢复
什么情况下会用到数据备份呢
数据丢失的场景
-
人为误操作造成的某些数据被误操作 -
软件BUG造成数据部分或者全部丢失 -
硬件故障造成数据库部分或全部丢失 -
安全漏洞被入侵数据恶意破坏
非数据丢失场景
-
基于某个时间点的数据恢复 -
开发测试环境数据库搭建 -
相同数据库的新环境搭建 -
数据库或者数据迁移
既然数据备份如此重要,那么如何进行数据备份呢?
主要有逻辑备份和物理备份两个方向
逻辑备份与对应的恢复
逻辑备份是比较简单的,也是中小型系统中最常用的备份方式,主要有两种方式,一种是将数据生成可以完全重现当前数据库中数据的insert语句;另一种就是将数据通过逻辑备份软件,将数据库表数据以特定分隔符进行分隔记录在文本文件中
生成insert语句备份
使用mysqldump可以来实现生成insert语句的逻辑备份文件
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
mysqldump的参数选项很多
--add-drop-database 在create database之前先执行drop database
-E, --events 备份事件
-x, --lock-all-tables 锁住所有数据库下的所有表
-l, --lock-tables 在备份中,锁住所有的表,备份时只能进行读取操作,一般用于Myisam,INNODB一般使用 --single-transaction
--master-data[=#] 当value为1时,转储文件中记录change master语句,当value为2时,change master语句被注释,默认为空
-R, --routines 备份函数和存储过程
--single-transaction 只对innodb有效,保证获得备份的一致性,但是并不能隔离DDL语句的操作,ALTER TABLE, DROP TABLE, RENAME TABLE,TRUNCATE TABLE
-T, --tab=name 产生tab分割的数据文件
--triggers 备份触发器
-w, --where=name 导出给定条件的数据
不过为了保证数据库中的数据一致,就需要进行一下特殊处理,两种方式都可
第一种方式:保证在同一事务里备份
使用--single-transaction选项,可以保证备份过程在同一个事务中,而且可以不影响数据库的任何正常服务
第二种方式:数据库不在有其他新的操作
这种方式就是将所需要备份的表锁住,只允许读不允许写,可以使用--lock-tables或--lock-all-tables来进行锁表操作,执行结束后会自动释放锁定
对于
--lock-tables选项并不会一次性将所有需要备份的表都锁定,而是每次仅仅锁定一个数据库的表,所以如果需要备份多个数据库的表,要使用--lock-all-tables来进行锁表,才能确保数据的完全一致性
恢复方式
可以使用source命令来进行数据恢复
source /tmp/backup.sql
也可以使用mysql命令行来进行恢复
mysql <backup.sql
生成特定格式的纯文本备份
这种备份方式比insert命令文件相比,占用的存储空间更小,但是在同一个备份文件中不能存在多个表的备份数据
mysql中提供两种方式来实现这种备份文件
第一种方式
使用select ... into outfile from ...来实现
示例
select * from user into outfile '/tmp/dump.txt'
fields terminated by ',' -- 表示每列的分隔符
optionally enclosed by '"' -- 对于字符串的包含符
lines terminated by '\n';
第二种方式
依然使用mysqldump来实现
mysqldump -uroot -T/temp/dump test user --fields-enclosed-by=\" --fields-terminated-by=,
恢复方式
由于该方式是按照每个表来进行备份的,所以恢复起来也需要每张表来进行恢复
有两种方式来进行恢复
第一种方式
使用load data infile命令,只能导入一张表
示例
load data infile '/tmp/user.txt' into table user fields terminated by ',' enclosed by '"'
第二种方式
使用mysql提供的mysqlimport来进行恢复,可以导入多张表,使用--user-threads参数可以并发导入多个文件
示例
mysqlimport --user=name --password=pwd test --fields-enclosed-by=\" fields-terminated-by=, /tmp/user.txt
mysqlimport --user=name --password=pwd test --user-threads=2 --fields-enclosed-by=\" fields-terminated-by=, /tmp/user.txt /tmp/student.txt
物理备份与对应的恢复
物理备份就是对数据库的物理对象所做的备份,数据库的物理对象主要由数据库的物理数据文件、日志文件以及配置文件等组成,由于不同的存储引擎存储的文件也不同,所以对于不同的存储引擎备份的文件也有所不同
MyISAM存储引擎
存储表结构元数据的.frm文件,存储表数据的.MYD文件,存储索引数据的.MYI文件
mysql提供了mysqlhotcopy来备份MyISAM存储引擎的数据
mysqlhotcopy db_name [./table_regex/] [new_db_name | directory]
该命令会先lock住表,然后执行flush tables动作,该正常关闭的表正常关闭,该fsync的数据都fsync,然后通过执行OS级别的复制命令,将需要备份的表或数据库的所有物理文件都复制到指定的备份集位置
Innodb存储引擎
Innodb中存放数据位置的配置有innodb_data-home-dir、innodb_data_file_path、innodb_log_group_home_dir、innodb_file_per_table
分为热备份和冷备份
-
冷备份:数据库处于关闭状态
-
热备份:数据库处于运行状态,热备份不停机进行备份,可以使用xtrabackup工具
https://zhhll.icu/2021/数据库/关系型数据库/MySQL/进阶/27.数据备份和恢复/
本文由 mdnice 多平台发布
相关文章:
数据备份和恢复
数据备份和恢复 什么情况下会用到数据备份呢 数据丢失的场景 人为误操作造成的某些数据被误操作 软件BUG造成数据部分或者全部丢失 硬件故障造成数据库部分或全部丢失 安全漏洞被入侵数据恶意破坏 非数据丢失场景 基于某个时间点的数据恢复 开发测试环境数据库搭建 相同数据库的…...
核心篇 - 集成IS-IS配置实战
文章目录 一. 实验专题1.1. 实验1:配置单区域集成IS-IS1.1.1. 实验目的1.1.2. 实验拓扑1.1.3. 实验步骤(1)配置IP地址(2)配置IS-IS 1.1.4. 实验调试(1)查看邻接表(2)查看…...
【OpenAI Sora】开启未来:视频生成模型作为终极世界模拟器的突破之旅
这份技术报告主要关注两个方面:(1)我们的方法将各种类型的视觉数据转化为统一的表示形式,从而实现了大规模生成模型的训练;(2)对Sora的能力和局限性进行了定性评估。报告中不包含模型和实现细节…...
MVC 、DDD、中台、Java SPI(Service Provider Interface)
文章目录 引言I 单体架构DDD实现版本1.1 核心概念1.2 DDD四层架构规范1.3 案例1.4 请求转发流程II 领域服务调用2.1 菱形对称架构2.2 中台III Java SPI3.1 概念3.2 实现原理3.3 例子:本地SPI找服务see alsojava -cp</...
C++单例模式的实现
单例模式就是在整个程序运行期都只有一个实例。在代码实现方面,我们要限制new出多于一个对象这种情况的发生。而不是仅仅依靠无保障的约定。 目前大多数的编程语言的做法都是私有化构造函数,对外提供一个获取实例的接口。这样做的目的使实例的创建不能在…...
rust函数 stuct struct方法 关联函数
本文结合2个代码实例主要介绍了rust函数定义方法,struct结构体定义、struct方法及关联函数等相关基础知识。 代码1: main.rc #[derive(Debug)]//定义一个结构体 struct Ellipse {max_semi_axis: u32,min_semi_axis: u32, }fn main() {//椭圆࿰…...
浅谈基于中台模式的大数据生态体系的理解
这篇文章主要浅谈一下我对大数据生态体系建设的理解。 大数据生态系统为高并发,高吞吐,高峰值,高堆积等大规模数据的采集,处理,计算,存储,服务提供了完善的处理体系,致力于打造核心数…...
MySQL的锁机制
一:概述 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢); 在数据库中,除传统的计算资源(如CPU,RAM,I/O等)的争用以外,数据也是一种供许多用…...
已解决ImportError: cannot import name ‘PILLOW_VERSION‘异常的正确解决方法,亲测有效!!!
已解决ImportError: cannot import name PILLOW_VERSION异常的正确解决方法,亲测有效!!! 文章目录 问题分析 报错原因 解决思路 解决方法 总结 在Python项目开发中,依赖管理是保证项目正常运行的关键环节。然而&…...
力扣:300. 最长递增子序列
动态规划: 1. 先定义dp数组来表示在下标为i时最长递增子序列,先初始化一下每个下标的值为dp【i】1。同时我们要判断在下标i之前的最长的递增子序列为多少,在判断当前的下标i是否满足递增的条件满足的话就进行dp【i】的重新赋值。之后要更新接受的最长递…...
Swing程序设计(10)列表框,文本框,文本域,密码框
文章目录 前言一、列表框二、文本框(域) 1.文本框2.文本域三、密码框总结 前言 该篇文章简单介绍了Java中Swing组件里的列表框、文本框、密码框。 一、列表框 列表框(JList)相比下拉框,自身只是在窗体上占据固定的大小…...
【Java八股面试系列】JVM-常见参数设置
目录 堆内存相关 显式指定堆内存–Xms和-Xmx 显式新生代内存(Young Generation) 显式指定永久代/元空间的大小 垃圾收集相关 垃圾回收器 GC 日志记录 处理 OOM JDK监控和故障处理工具总结 堆内存相关 Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线…...
【Python--Web应用框架大比较】
🚀 作者 :“码上有前” 🚀 文章简介 :Python 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 Django Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不…...
Effective Objective-C 学习第三周
理解引用计数 Objective-C 使用引用计数来管理内存:每个对象都有个可以递增或递减的计数器。如果想使某个对象继续存活,那就递增其引用计数:用完了之后,就递减其计数。计数变为 0时,就可以把它销毁。 在ARC中…...
人工智能学习与实训笔记(四):神经网络之NLP基础—词向量
人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 本篇目录 四、自然语言处理 4.1 词向量 (Word Embedding) 4.1.1 词向量的生成过程 4.1.2 word2vec介绍 4.1.3 word2vec:skip-gram算法的实现 4.2 句向量 - 情感分析 4.2.1 LSTM (Long S…...
【教程】Kotlin语言学习笔记(一)——认识Kotlin(持续更新)
写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 文章目录 【Kotlin语言学习】系列文章一、Kotlin介绍二、学习路径 一、…...
MySQL性能分析1
1、查看执行频次 查看当前数据库的INSERT,UPDATE,DELETE,SELECT的访问频次,得到当前数据库是以插入,更新和删除为主还是以查询为主,如果是以插入,更新和删除为主的话,那么优化比重可以轻一点儿。 语法: …...
四、案例 - Oracle数据迁移至MySQL
Oracle数据迁移至MySQL 一、生成测试数据表和数据1.在Oracle创建数据表和数据2.在MySQL创建数据表 二、生成模板文件1.模板文件内容2.模板文件参数详解2.1 全局设置2.2 数据读取(Reader)2.3 数据写入(Writer)2.4 性能设置 三、案例…...
ABC340 A-F题解
文章目录 A题目AC Code: B题目AC Code: C题目AC Code: D题目AC Code: E题目思路做法时间复杂度AC Code: F题目思路AC Code: A 题目 模拟即可,会循环都能写。 AC Code: #include …...
微软 CMU - Tag-LLM:将通用大语言模型改用于专业领域
文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 论文地址:https://arxiv.org/abs/2402.05140 Github 地址:https://github.com/sjunhongshen/Tag-LLM 大语言模型(…...
从医院呼叫器到智能家居:用Multisim 14.2复刻经典八路呼叫器(附完整仿真文件)
从医院呼叫器到智能家居:用Multisim 14.2复刻经典八路呼叫器(附完整仿真文件) 在电子技术发展的历史长河中,经典电路设计往往蕴含着跨越时代的智慧。八路呼叫器作为数字电子技术的经典教学案例,其核心模块——编码、锁…...
RK3566 Android11 录音难题:手把手教你搞定ES7202 PDM ADC配置(附驱动修复)
RK3566 Android11音频驱动实战:ES7202 PDM ADC配置与异常修复全解析 当RK3566遇上ES7202这颗纯ADC芯片,不少开发者会在Android11音频子系统中遭遇"无声惊魂"。不同于常规I2S架构,PDM直连方案在驱动层埋着几个关键"暗坑"。…...
基于Qt框架的PC端学生信息管理系统设计与实现
1. 为什么选择Qt开发学生信息管理系统? 第一次接触学生信息管理系统开发时,我尝试过用Java Swing、Python Tkinter等多种GUI框架,最后发现Qt才是真正的"生产力工具"。Qt的信号槽机制让界面交互变得异常简单,跨平台特性又…...
罗技鼠标宏压枪脚本:绝地求生精准射击的终极解决方案
罗技鼠标宏压枪脚本:绝地求生精准射击的终极解决方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的后坐力控…...
别再纠结选哪个了!CAN、串口、蓝牙、TCP,手把手教你根据项目场景选通信协议(附Android实战代码)
通信协议选型实战指南:从车载系统到智能家居的黄金法则 当你在凌晨三点的办公室里盯着四块显示器,面前摆着CAN分析仪、蓝牙嗅探器和串口调试终端时,突然意识到项目deadline就在明天——这种场景对嵌入式开发者来说再熟悉不过了。选择错误的通…...
Harness Engineering 又是什么新 AI 玩具?
今天我们聊了业内最新提出的 Harness Engineering。可以看到,在 AI 智能体优先的世界里,软件工程的鲁棒性开始转移到了支撑智能体上。最近 AI 编程可以说是卷上天了,不得不说时代的大车轱辘已经碾过来了。GLM 一个月内狂发新模型。我们今天来…...
压缩强度试验机选的显示屏:在质量、价格、交期、服务上的适配优势
作为压缩强度试验机厂商的销售,我们在整机研发与生产中,显示屏是核心交互部件,直接影响设备的测试精度、操作体验与市场竞争力。结合多年行业经验与实际采购数据,恒域威显示屏在质量、价格、交期、服务四大核心维度,与…...
BiliBili-UWP:打造Windows平台高效B站观影体验深度指南
BiliBili-UWP:打造Windows平台高效B站观影体验深度指南 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP BiliBili-UWP作为一款专为Windows平台设计的…...
Bypass Paywalls Clean:突破内容壁垒的智能解决方案
Bypass Paywalls Clean:突破内容壁垒的智能解决方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的今天,你是否曾因学术论文被付费墙阻挡而错失研…...
解锁高效无水印备份:抖音视频批量下载的完整指南
解锁高效无水印备份:抖音视频批量下载的完整指南 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 直面内容管理痛点:三个真实用户的困境 场景一:学习资源的系统性流失 教…...
