13-MySQL--数据备份与还原(数据表备份+单表数据备份
+SQL备份+增量备份)
⼀、数据备份与还原
1、备份:将当前已有的数据或者记录保留(在不影响原来数据的基础上保留)
2、还原:将已经保留的数据恢复到对应的表中
3、为什么要做备份还原
(1)防⽌数据丢失:被盗、误操作等
(2)保护数据记录
4、数据备份还原的⽅式有很多种:数据表备份、单表数据备份、SQL备份、增量备份
⼆、数据表备份
1、数据表备份:不需要通过SQL来备份,直接进⼊到数据库⽂件夹复制对应的表结构以及数据⽂件。还原的时候,直接将备份的内容放进去即可
2、数据表备份有前提条件:根据不同的存储引擎有不同的区别
(1)存储引擎:MySQL进⾏数据存储的⽅式。主要有两种:innodb和myisam
(2)对⽐innodb和myisam数据存储⽅式
a). innodb:只有表结构xxx.frm,所有表的数据全部存储到ibdata1⽂件中(data\ibdata1跨库不识别)
好处:集中管理,数据查询的效率相对较⾼
弊端:管的太多,算法⽐较复杂
b). myisam:表、数据和索引全部单独分开存储(不依赖任何数据库)。⼀个存储引擎为myisam的表创建成功后,在数据库对应的⽂件夹下,会产⽣三个⽂件:
表名.frm:结构⽂件
表名.MYD:数据data
表名.MYI:索引index
3、数据表还原
(1)数据表备份通常适⽤于myisam存储引擎。备份时,直接复制xxx.frm+xxx.MYD+xxx.MYI三个⽂件即可。还原时,将复制的备份⽂件(xxx.frm+xxx.MYD+xxx.MYI)放到对应的数据库下,即可使⽤
eg:在mydatabase数据库中创建了⼀个存储引擎是myisam的表my_myisam。备份时,直接将mydatabase⽂件夹下的对应⽂件(三个)复制即可。还原时,如果想要将my_myisam表还原到test数据库下,直接将复制的三个⽂件粘贴到test⽂件夹中,即可使⽤
my_myisam表的数据
(2)如果数据表的存储引擎是innodb,不能使⽤数据表备份这种⽅式备份数据。因为存储引擎是innodb的数据表,表结构⽂件(表
名.frm)在数据库对应的⽂件夹下,但表中的数据在data\ibdata1⽂件中。只备份表结构没⽤,要的是结构中的数据。⽽innodb规定这个数据表只能在这个数据库下,对应的数据才能提供输出。数据在data\ibdata1中,跨库不识别
eg:在mydatabase数据库中创建了⼀个存储引擎是innodb的表my_class,想将该表my_class移动到test数据库下。如果只将mydatabase⽂件夹下的表结构⽂件my_class.frm复制到test⽂件夹下,use test; show tables; 时可以看到my_class表,但select * from my_class; 查询数据时会报错,不到my_class表
4、存储引擎是myisam的数据表⾮常好迁移,备份时也不需要断掉业务(服务器可以继续使⽤),直接备份⽂件。但是备份上占⽤磁盘空间,没有效率 -- 不推荐使⽤数据表备份
三、单表数据备份
1、单表数据备份:每次只能备份⼀张表,且只能备份表中数据,不能备份表结构
2、通常的使⽤:将表中的数据导出到⽂件
注:⼆维表不能放到.excel中进⾏统计,所以要将数据导出到.txt再进⾏打印等操作
3、单表数据备份:从表中选出⼀部分数据保存到外部的⽂件xxx\中(outfile)。前提是外部⽂件不存在
-- 单表数据备份:从表中选出⼀部分数据保存到外部的⽂件中(outfile)
-- 前提是外部⽂件不存在
-- 备份⽂件所在路径要加单引号
select * / 字段列表 into outfile 备份⽂件所在路径 from 数据源;
mysql存储文档-- 单表数据备份:从表中选出⼀部分数据保存到外部的⽂件中(outfile)
-- 前提是外部⽂件不存在
-- 备份⽂件所在路径要加单引号
-- 选择要操作的数据库
use mydatabase;
-- 备份⽂件所在路径要加单引号
select * into outfile 'C:/ProgramData/MySQL/MySQL Server 5.5/data/' from my_student;
(1)备份⽂件所在路径要加单引号,且指定的备份⽂件所在路径是:路径+⽂件名
(2)备份成功后,在指定的备份⽂件所在路径下会⽣成⼀个指定⽂件名的⽂件。不要⽤.txt打开该⽂件,因为⽤.txt打开该⽂件会永久性的改变备份⽂件的字符集编码格式
(3)⽣成的备份⽂件中,只有数据,没有表结构,且数据之间⽤tab键隔开
(4)单表数据备份的前提是外部⽂件不存在。如果指定的备份路径下存在⽂件xxx\,则执⾏数据备份的sql语句会报错,备份失败
4、单表数据⾼级备份:⾃⼰定制字段和⾏的处理⽅式(指定备份处理⽅式)
-- 单表数据⾼级备份:⾃⼰定制字段和⾏的处理⽅式(指定备份处理⽅式)
select * / 字段列表 into outfile 备份⽂件所在路径 fields 字段处理 lines ⾏处理 from 数据源;
(1)fields:字段处理
a). enclosed by:字段使⽤什么内容包裹。默认是'',空字符串(相当于没有被包裹)
b). terminated by:字段以什么结束。默认是"\t",tab键
c). escaped by:特殊符号⽤什么⽅式处理。默认是'\\',使⽤反斜杠转义
(2)lines:⾏处理
a). starting by:每⾏以什么开始。默认是'',空字符串(没有东西)
b). terminated by:每⾏以什么结束。默认是"\r\n",换⾏符
-- 单表数据⾼级备份:⾃⼰定制字段和⾏的处理⽅式(指定备份处理⽅式)
select * into outfile 'C:/ProgramData/MySQL/MySQL Server 5.5/data/'
-- 字段处理
fields
enclosed by '"' -- 数据使⽤双引号包裹
terminated by '|' -- 使⽤竖线分隔字段数据
-- ⾏处理
lines
starting by 'START:' -- ⾏以"STRAT:"开始
from my_class;
5、单表数据还原:将⼀个在外部保存的数据重新恢复到表中。前提是表结构存在(如果表结构不存在,不能还原单表数据)
-- 单表数据还原:将⼀个在外部保存的数据重新恢复到表中
-- 前提是表结构存在
-- 怎么备份的,怎么还原
load data infile 备份⽂件所在路径 into table 表名 [(字段列表)] fields 字段处理 lines ⾏处理;
-- 单表数据还原:将⼀个在外部保存的数据重新恢复到表中
-- 前提是表结构存在
-- 删除表中数据(表结构还在)
delete from my_class;
-- 查看删除后的表数据
select * from my_class;
-- 单表数据还原
load data infile 'C:/ProgramData/MySQL/MySQL Server 5.5/data/' into table my_class
-- 字段处理
fields
enclosed by '"' -- 数据使⽤双引号包裹
terminated by '|' -- 使⽤竖线分隔字段数据
-- ⾏处理
lines
starting by 'START:'; -- ⾏以"STRAT:"开始
-- 查看还原后的表数据
select * from my_class;
6、单表数据备份,备份成功后,在指定的备份⽂件所在路径下会⽣成⼀个指定⽂件名的⽂件。不要⽤.txt打开该⽂件,因为⽤.txt打开该⽂件会永久性的改变备份⽂件的字符集编码格式。
如果⽤.txt打开备份的单表数据⽂件,在单表数据还原时,会因为乱码⽽还原失败
四、SQL备份
1、SQL备份:备份的是sql语句。系统会对表结构以及数据进⾏处理,变成对应的sql语句,然后进⾏备份。还原的时候,只要执⾏sql指令即可(主要就是针对表结构)
注:SQL备份是⼀种较⼩访问量的数据备份
2、对于SQL备份,MySQL没有提供备份指令,需要利⽤MySQL提供的软件
3、也是⼀种客户端,需要操作服务器,必须连接认证(⼀个客户端要操作服务器,必须要经过连接认证)
-
- 连接认证
-- 可以进⾏单表、多表(多表⽤空格分隔)和整库(不写表名代表整库备份)备份
-- SQL备份,⽂件路径以.sql结尾,代表是⼀个sql⽂件。结尾没有分号(;)
-hPup 数据库名字 [数据表名字1 数据表名字2 ... ] > 外部⽂件⽬录(建议使⽤xxx\xxx\xxx.sql)
注:mysql的bin⽬录下有三个软件:
(1):客户端
(2):服务器
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论