数据库的备份与还原


备份: 将当前已有的数据或者记录进行保留.

还原: 将已经保留的数据恢复到对应的表中.

为什么要备份和还原?

1.防止数据丢失 : 被盗,误操作.

2.保护数据记录

数据备份还原的方式:

1.数据表备份

2.单表数据备份

3.SQL备份

4.增量备份

数据表备份

不需要通过SQL来备份,直接进入发哦数据文件夹复制对应的表结构以及数据文件,

以后还原的时候直接将备份内容放进去即可.

数据表备份的前提条件 : 根据不同的存储引擎有不同的区别

存储引擎:mysql进行数据存储的方式 主要用两种(innodb 和 myisam) 免费

MySQL无备份无日志恢复数据 mysql数据表备份和恢复_数据

 

对比myisam和innodb :数据的存储方式

innodb : 只有表结构,数据全部存储到ibdate 文件中

myisam : 表 , 数据 和 索引 全部单独分开存储.

MySQL无备份无日志恢复数据 mysql数据表备份和恢复_字段_02


myisam 可以将三个文件复制到任何一个数据库中,便可使用,但是innodb不行.

myisam优势:数据库的迁移很容易,数据库,不要断掉业务

maisam劣势:比较浪费磁盘空间.

单表数据备份

特点:每次只能备份一张表,只能备份数据,不能备份表结构

通常使用:将表中的数据进行导出到文件

备份

从表中选出一部分数据保存到外部文(outfile)中.

基本语法

--选择一部分数据 --外部文件 --选择数据源

select */字段列表 into outfile 外部文件路径 from 数据源;

前提是外部文件不存在;

eg. select * into outfile 'd/beiFen/user.txt' form user ;

select * into outfile "d/beiFen/user.txt"geo form user ;

高级备份

select */字段列表 into outfile ' 外部文件路径 ' fields 字段处理 lines 行处理 from 数据源;

fields 字段处理方式:

enclosed by : 字段使用什么包裹 默认是 '',空字符串 --用什么包裹

terminated by : 字段以什么结束 默认是 '\t' , tab键 --英文翻译为 : 终止

escape by : 特殊符号用什么方式处理 默认是'\\' , 使用反斜杠转义--转义

lines 字段处理方式:

starting by : 每行以什么开始 默认使用 '' , 空字符串

terminated by : 每行以什么结束 默认使用 '\r\n' 换行符

select * into outfile 'd:/beifen/users.txt' fields enclosed by '"' lines starting by 'staitng:' from user ;

还原

将一个在外部保存的数据重新恢复到表中,表结构不存在,就不能被还原

基本语法:

load data infile 文件所在路径 表名[(字段列表)] fields 字段处理 lines 行处理;

字段处理和行处理,怎么备份怎么还原;

load data infile 'd:/beifen/users.txt' fields enclosed by '"' lines starting by 'staitng:';

SQL备份

SQL备份: 备份的SQL语句, 系统会对表结构以及数据进行处理,变成对应的SQL语句,然后进行备份,还原的时候知道执行SQL指令即可.(针对表结构)

备份

MySQL中没有提供备份指令. 需要利用MySQL提供的软件:mysqldump.exe

mysqldump.exe 也是一种客户端,需要操作数据库:必须要连接认证,不需要分号.

mysqldump/mysqldump.exe -hPup 数据库名字 [表名1 [表名2...]] > 外部文件目录

还原

方案一:使用MySQL客户端还原

mysql.exe -hPup 数据库名字 < 备份的文件目录

数据库名字可以是别的数据库,可以还原到别的数据库中.

方案二: 使用SQL指令还原

source 本分文件所在的路径;

SQL备份优点 : 可以备份表结构以及数据

SQL备份缺点 : SQL语句增加,浪费空间

增量备份

增量备份:不是针对数据或者SQL指令进行备份,是针对MySQL服务器的日志文件进行备份.是制定时间段开始进行备份,备份不会重复,而且所有的操作都会备份