文章目录
数据表备份单表数据备份SQL备份增量备份
备份:将当前已有的数据或者记录保留还原:将已保留的数据恢复到对应的表中为什么要做数据备份与还原? (1)防止数据丢失:被盗、误操作 (2)保护数据记录数据备份还原的方式有很多种:数据表备份、单表数据备份、SQL备份、增量备份
数据表备份
不需要通过SQL来备份:直接进入到数据库文件夹下赋值对应的表结构以及数据文件,以后还原的时候,直接将备份的内容放到对应的数据库目录下即可数据表备份有前提条件: 根据不同的存储引擎有不同的区别.储引擎: mysql进行数据存储的方式: 主要是两种: innodb(免费)和myisam(免费)对比myisam和innodb:数据存储方式 (1)innodb:只有表结构文件,数据全部存储到ibdata1文件中 (2)myisam存储引擎:表结构文件、数据文件、索引文件全部单独分开存储 数据表备份只能备份存储引擎为myisam的数据库:直接拷贝三个文件到目标数据库下即可:表结构文件、数据文件以及索引文件
单表数据备份
单表数据备份:每次只备份一张表:只能备份数据:表结构是不能备份的通常的使用:将表中的数据进行导出到文件备份:从表中选出一部分数据保存到外部文件中
select */字段列表 into outfile 文件所在路径 from 数据源;
前提:外部文件不存在文件所在路径使用字符串:即单引号进行包裹 高级备份:自己制定字段和行处理方式
select */字段列表
into outfile '文件所在路径'
fields 字段处理
lines 行处理
from 数据源;
fields:字段处理
enclosed by:字段使用什么内容包裹:默认是啥也没有
terminated by:字段以什么结束:默认是tab键,即"\t"
escaped by:特殊符号用什么方式处理:默认是"\\",即使用反斜杠转义
lines:行处理
starting by:每行以什么开始:默认是空字符串,即什么也没有
terminated by:每行以什么结束:默认是换行,即"\r\n"
select *
into outfile 'c:\stu.txt'
fields enclosed by '"' -- 字段以双引号包裹
terminated by '|' -- 字段以|结束
lines starting by 'START:' -- 每行以START:字符串开头
from student;
数据还原:将一个在外部保存的数据重新恢复到表中:前提:表结构必须存在:怎么备份的就怎么还原
load data infile '文件所在路径'
into table 表名称[(字段列表)]
fileds 字段处理
lines 行处理
中文乱码的原因:文件stu.tx编码字符集与mysqld.exe解码字符集不相同 乱码问题还是没有解决
SQL备份
SQL备份:备份的是SQL语句:系统会对表结构以及数据进行处理,变成对应的SQL语句,然后进行备份:还原的时候只需要执行SQL指令即可:主要是针对表结构备份:mysql没有提供专门的备份指令:需要利用mysql数据库提供的软件mysqldump.exe:mysqldump.exe也是一种客户端,需要操作数据库服务器:必须连接认证:
mysqldump.exe -hPup 数据库名字 [数据表1 数据表2 ...] > '外部文件';
单表备份 mysqldump/mysqldump.exe -hPup 数据库名称 [数据表1 数据表2 ] > 文件所在路径:主要结尾不能有分号,如果有分号则备份不会成功
mysqldump/mysqldump.exe -hlocalhost -P3306 -uroot -proot 数据库名称 [数据表1 数据表2 ] > 文件所在路径
mysqldump/mysqldump.exe -hlocalhost -P3306 -uroot -p 数据库名称 [数据表1 数据表2 ] > 文件所在路径
>: 输入密码
多表备份 整库备份 SQL数据还原:两种还原方式方案1:使用mysql.exe客户端进行还原
mysql -hPup 数据库名字 < 文件所在路径
使用SQL指令还原:在mysql客户端连接下:source 文件所在路径
增量备份
不是针对数据或者SQL指令进行备份: 是针对mysql服务器的日志文件进行备份增量备份: 指定时间段开始进行备份., 备份数据不会重复, 而且所有的操作都会备份(大项目都用增量备份)