Mysql数据备份(mysqldump的操作)

article/2025/10/7 23:53:50

数据备份

所有备份数据都应放在非数据库本地,(得用远程存储,如ftp,nfs)而且建议有多份副本。

备份的作用

能够防止由于机械故障以及人为误操作带来的数据丢失,如,将数据库文件保存在了其它地方。

冗余

数据有多份冗余,但不等备份,只能防止机械故障还来的数据丢失,如主备模式、数据库集群。

备份过程中必须考虑因素:

1. 数据的一致性(数据备份的时候是什么样,恢复之后就是什么样)

2. 服务的可用性(在备份数据的时候能不能同时给客户端通过服务,比如冷备份就不可以)

数据库里的备份分类

物理备份

逻辑备份

冷备份

热备份

物理备份的工具

tar,cp

里面的库可以cp一份保存下来,或者打个tar包(强烈不介意)

mysqlhotcopy

只能用于备份MyISAM

xtrabackup

物理备份(在公司可能用得到,)

inbackup

备份

lvm snapshot

Lvm快照实现物理备份 + binlog  (logical volumn manager)

物理备份: 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。如:cp,先打tar包再cp。

本质是备份文件,将来不管用到什么备份,如果是物理备份,基本就是备份文件。

物理备份和逻辑备份的区别?

逻辑备份就是备份命令,物理备份就是备份文件。

逻辑备份的工具
mysqldump适合做表的备份,库的备份,完整备份(命令行的管理工具,可以写脚本)是装好mysql自带的,不需要额外安装
binlog 

用于备份恢复数据命令行的管理工具,可以写脚本

mydumper支持多线程恢复(不用记)
phpmyadminweb界面的mysql管理工具,有界面可以点点,运维基本不用,开发用
导入导出 数据可以单独的导出成文本文件,也可以从文本文件把数据导入到数据库里面去(用的少)

逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),其实就是备份的写操作。适用于中小型数据库,效率相对较低。( mysql就是中小型数据库,Oracle、SQL Server 才是大型的,之所以mysql流行是因为不要钱

就比如binlog日志,备份的不是id=1这个数据,备份的不是存储数据的表空间文件,备份的是一条命令,恢复数据的时候是重新执行这条命令,而不是把备份的文件拷过来。像这种备份数据的方法就是逻辑备份。

xtrabackup备份和mysqldump备份的区别

xtrabackup是物理备份,mysqldump是逻辑备份。物理备份永远要比逻辑的效率高,物理备份的是文件,拷贝文件的速度肯定比执行命令的速度要快,比如一万条命令去执行,肯定比拷贝一万条数据花的时间要长,一万条数据放在一个文件里面也没多少瞬间拷完了,但一万条命令执行起来得执行好一会。

冷备份,热备份

冷备份和热备份本身没有直接的联系这是另外一种分类,在这个分类里最大的区别就是冷和热。

冷备份

指数据库在备份数据的时候需要关库

热备份

指服务被客户端访问的情况下做数据的备份

mysqldump的语法:

mysqldump --help  查看帮助

1.mysqldump +database(数据库的名称/目录的名称) 后面的表可写可不写

2.mysqldump + - -database(这是选项一个参数)后边是库的名称

3.--all-databases 所有的库

操作

mysqldump -uroot -p1 db1 t1 打印到屏幕了,和二进制文件有点像,前面的东西都是注释。往下翻看配置文件。

 drop如果t1表存在,就把它干掉,这里的create table t1其实就是创建t1的命令,系统给补充了一下。

把t1表的write锁上,(我要操作表,别人不能操作,只能我操作)

数据库的表,在同一时刻,这个表被写入数据的时候,不能让别的客户端连进来打开这个表去写东西,不然我给id字段的第一条记录赋值1,你赋值2,它就混乱了。所以它有锁表的操作。

insert into 把这个数据插入进去了

unlock tables;解锁

看看里面有什么东西

mysqldump -uroot -p1 db1 t1  回忆一下刚才这条命令,展示出来的东西。现在是展示到屏幕上的,把它重定向到随便一个文本文件里边。比如# mysqldump -uroot -p1 db1 t1 > db1.t1.sql。这就是备份数据,这个数据就备份好了。

刚才的内容:

1.先查看了一下t1是否存在,如果存在把它干掉,如果不存在什么都不干

2.它创建了一个表叫t1

3.它把t1表锁了,插入数据,unlock

两种方法恢复数据库表

一、指定库

进入mysql,把db1.t1删掉,恢复它

 查看有没有备份数据

 把mysql客户端执行一下,指定一下恢复到哪个数据库

mysql -u root -p123  db1 < db1.t1.sql

数据就有了

 二、修改配置文件

vim db1.t1.sql

 进去配置文件,输入use db1;(就可以自己编辑配置文件大小写不重要)这时就不用加库了

mysql -uroot -p123 < db1.t1.sql

备份多张表

 cat db1.t1.2.sql 看备份文件,t1 t2都有了

 现在把t1 t2全删了,可以用这个表恢复,如果现在我就有这一个备份文件,里面备份了t1和t2但是只把t2丢了,t1还在怎么办?

因为db1.t1.2.sql 这个文件都是文本文件,可以拷贝一份,拷贝成dbt12.sql

 编辑第一个文件,把注释文件留着,t1文件中间的删了

  删掉之后,写上use db1;  

 

 t2就回来了

 备份表

# mysqldump -uroot -p1 db1 t1 > db1.t1.sql 重定向到   备份db1里面的t1表

备份多个表

# mysqldump -u root -p1 db1 t1 t2 > /db1.t1.2.sql  

备份一个库

# mysqldump -u root -p1 db1 > db1.sql 把表去掉就是单独一个库,一般备份文件都是以.sql结尾

 备份多个库    加-B   专门用来备库

# mysqldump -u root -p1 -B db1 db2 db3 > db123.sql

备份所有的库

#mysqldump -u root -p1 -A > /alldb.bak        -A不需要指定想备份什么东西会备份所有的库,包括mysql库(授权表的库)也会做备份。

恢复数据库

为保证数据一致性,应在恢复数据之前停止数据库对外的服务,停止binlog日志

因为恢复数据库就是把那些sql语句重新再执行一遍,binlog日志里面原来已经记录了一遍,再记录一遍就浪费了。binlog日志会记录所有写操作,恢复数据也是写操作,所以没必要再记录。

mysql> set sql_log_bin=0 在mysql客户端内部临时设置关闭binlog日志

1vim db1.sql    恢复的时候它是直接创建表,没库,得手动创建库,

进去配置文件去最前面

create database db1;  

use db1;

mysql -uroot -p123 < db1.sql   这条命令主要是用来备份表的,在恢复的时候先切换成一个库,才能备份表,所以需要稍微改一下配置文件

2#mysql -u root -p1 -D db1 < db1.t1.bak

模拟:完全 + 增量 binlog

完整备份:

不管数据库里有什么,统统都做备份。(-A)缺点:天天做重复的东西在浪费,服务器的性能是有限的。一般情况下,不会天天做完整备份,所以会配合其他的备份方式。

一般情况下,一个月,或者半个月做一次完整备份。看公司是怎么定的。这么做也有问题,比如一个月做一次完整备份,每个月的1号12点开始做完整备份。但是15号-18号的数据坏了,恢复的时候得恢复整个月的数据。假如单独的有15,16,17,18的日志,就可以单独的恢复。所以叫完整备份+增量binlog。

平时一个月做一次完整备份,每天都要做一次binlog日志的备份,一天刷新一个新文件,一天一个binlog日志,假如18号的数据坏了,就把18号那天的binlog日志那个文件拿出来恢复就完了。

增量备份:

每天都备份全新的东西,不在备份旧的东西了。比如今天的binlog日志我备份到12点,12点之后会产生一个全新的binlog日志文件备份第二天的,第二天的12点又产生一个全新的binlog日志备份第三天的。总之一个binlog日志备份一整天的数据,这就是每次都是备份新的,这种备份方式叫做增量备份。

流程 

用mysqldump做完整备份,binlog做增量备份

在备份之前我有一个库叫school,有一张表是t1。t1里面有1和2两条数据。

在备份的时候用mysqldump做备份

操作的时候

恢复的流程:

恢复完全备份,恢复增量备份,恢复配置文件(cp或者打个tar包),创建所需的目录及权限(有什么新的目录需要改权限,给它创建好)

为什么会有,恢复配置文件,创建所需的目录及权限这两个操作?

因为很有可能换了一台全新的机器,新装的mysql服务,要恢复数据,里面的原来配置文件也没了,得恢复过来,存储数据,日志的目录都没了,得创建好。


http://chatgpt.dhexx.cn/article/moaPaXdq.shtml

相关文章

MySQL 数据备份与恢复

本次使用的MySQL版本为8.0.20 目录 一、数据备份 1.使用 MySQLdump 命令备份 &#xff08;1&#xff09;使用MySQLdump备份单个数据库中的所有表 案例&#xff1a;完成数据插入后&#xff0c;输入备份命令如下&#xff1a; &#xff08;2&#xff09;使用MySQLdump备份数据…

MySQL备份

目录 一、直接拷贝数据库文件 二、mysqldump备份数据库 1、备份 2、备份还原 (1)完全备份还原 (2)增量备份 #eg ​(1)创建一个新的数据库表resume.test ​(2)此时完全备份 ​​(3)接着再往数据库表里面插入两条数据 ​(4)删除数据库resume,刷新日志 ​(5)此时会增加一个…

MySQL备份方案

mysql数据库的几种备份方案&#xff1a; 一、binlog二进制日志通常作为备份的重要资源&#xff0c;所以再说备份方案之前先总结一下binlog日志 1、binlog日志 1.1、引起mysql服务器改变的任何操作( 增 删 改 没有查)1.2、复制功能依赖于此日志1.3、slave服务器通过复制master…

MySQL 数据库备份(一)(完全备份与恢复)

文章目录 前言一、MySQL 完全备份1.数据库备份方式精讲1.1 数据库备份的重要性1.2 数据库备份的分类1.2.1 物理备份1.2.2 逻辑备份1.2.3 完全备份1.2.4 差异备份1.2.5 增量备份1.2.6 备份方式比较 1.3 MySQL 完全备份概念解读 2.mysqldump 备份演练2.1 使用 tar 打包文件夹备份…

捷豹路虎选择思博伦车载以太网一致性测试解决方案

现代化的汽车往往拥有上百种发动机控制单元&#xff08;ECU&#xff09;&#xff0c;随着越来越多的车辆开始支持多摄像机和高级驾驶员辅助系统&#xff08;ADAS&#xff09;等特性&#xff0c;汽车设计师必须在车载网络中采用更高带宽的以太网技术。汽车以太网源于现代通信网络…

Hype_V

Hyper-V是 微软的一款虚拟化产品&#xff0c;是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。这也意味着 微软会更加直接地与市场先行者VMware展开竞争&#xff0c;但竞争的方式会有所不同。 目录 简介 系统要求 架构特点 技术 实际部署 展开 简介 系统…

HSRP介绍

HSRP(Hot Standby Router Protocol 热备份路由器协议)是Cisco的专有协议。HSRP把多台路由器组成一个“热备份组”&#xff0c;形成一个虚拟路由器。这个组内只有一个路由器是Active(活动)的&#xff0c;并由它来转发数据包&#xff0c;如果活动路由器发生了故障&#xff0c;备份…

php+coreseek/sphinx之中文全文搜索平台搭建

1.简介 sphinx是一款高性能全文搜索软件包&#xff0c;由俄罗斯人开发&#xff0c;sphinx本身是可以支持中文搜索的&#xff0c;只是不支持中文分词&#xff0c;需要安装中文分词插件&#xff0c;coreseek就是一个打包了mmseg中文分词插件和sphinx源码的安装包。 2.安装 cores…

live555传输Speex音频详解一:Speex over RTP

1. RTP Speex 头部 RTP头部在[RFC3550]中定义。本文定义RTP头部中各字段的用法。 Payload Type (PT): 本格式的负责类型号。 Marker (M) bit: 此位被用来标志一段无声后有声的开始。打在 有声数据的第一个包上。 Speex支持声音检测&#xff0c;可以在无声时不 产生帧数据。所…

Speex的使用

Downloads Speex是一套主要针对语音的开源免费&#xff0c;无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外&#xff0c;相对于其它编解码器&#xff0c;Speex也很适合网络应用&#xff0c;在网络应用上有着自己…

网络测速服务器OpenSpeedTest

什么是 OpenSpeedTest &#xff1f; OpenSpeedTest 是一个跨平台的互联网速度测试应用程序。因此&#xff0c;您可以在不同操作系统中的各种网络浏览器中测试您的互联网速度&#xff0c;而无需安装任何其他应用程序或插件&#xff08;无需 Flash 或 Java&#xff09;。这意味着…

【SpeechX—统一高性能语音部署工具】SpeechX Custom ASR

(以下内容搬运自 PaddleSpeech) 在一些场景中&#xff0c;识别系统需要高精度的识别一些稀有词&#xff0c;例如导航软件中地名识别。而通过定制化识别可以满足这一需求。 相关demo: https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/demos/custom_streaming_asr …

Speex for Android

http://blog.csdn.net/chenfeng0104/article/details/7088138 在Android开发中&#xff0c;需要录音并发送到对方设备上。这时问题来了&#xff0c;手机常会是GPRS、3G等方式上网&#xff0c;所以节省流量是非常关键的&#xff0c;使用Speex来压缩音频文件&#xff0c;可以将音…

IOS开发之SDWebImage

SDWebImage 前言&#xff1a;在我们日常的开发中我们通常会使用SDWebImage来实现UIImageView加载来自互联网的远程图片 官方介绍&#xff1a;一个具有缓存支持的异步映像下载程序 功能简介 一个添加了web图片加载和缓存管理的UIImageView分类一个异步图片下载器一个异步的内存…

SDWebImage-解码、压缩图像

一、简单介绍 研究了下SDWebImage的源码&#xff0c;借鉴了别人的一些资料&#xff0c;感觉逐渐的明白的一些原理&#xff0c;现在就来记录下。 在我们使用 UIImage 的时候&#xff0c;创建的图片通常不会直接加载到内存&#xff0c;而是在渲染的时候默认在主线程上再进行解码…

sdwebimage 加载webp图片

sdwebimage加载 webp / git 配置宏 - (void)setUpCusPhoto {_scrollView [UIScrollView new];_scrollView.frame self.view.bounds;[self.view addSubview:_scrollView];//webpUIImageView *view [[UIImageView alloc] init];view.frame CGRectMake(10, 100, 320, 200);NS…

SDWebImage 5.0简介

一、 SDWebImage原理简介 1.结构 (设计思路借鉴&#xff1a;提供多种接口&#xff0c;到底层调用到同一个方法&#xff0c;减少调用方对可选参数的传递) UIImageViewWebCache和UIButtonWebCache直接为表层的 UIKit框架提供接口, SDWebImageManger&#xff08;SDWebImageManager…

SDWebImage的主流程

SDWebImage提供了UIImageView的分类来实现从网络端下载数据并缓存到内存和磁盘。非常的流行,现在就主流程分析下. 主要的学习链接 &#xff1a;SDWebImage源码解读 - 简书 SDWebImage有如下特点&#xff1a; 提供了UIImageView和UIButton的分类。以支持加载网络图片并缓存…

SDWebImage的缓存策略

SDWebImage 相信对大多数开发者来说&#xff0c;都是一个不陌生的名字。它除了帮助我们读取网络图片&#xff0c;还会处理这些图片的缓存。它的缓存机制到底是什么样的呢&#xff0c;让我给跟大家唠叨唠叨&#xff0c;希望你能有收获。 基本结构 闲言少叙&#xff0c;咱们这就…

SDWebImage源码解析

这段时间研究了一下SDWebImage源码&#xff0c;因个人能力有限&#xff0c;如有不对的地方&#xff0c;请指出或留言&#xff0c;谢谢&#xff01; SDWebImage是一个开源的第三方库&#xff0c;它提供了UIImageView的一个分类&#xff0c;以支持从远程服务器下载并缓存图片的功…