数据的备份与还原
一、备份方式
数据备份的方式有:数据表备份,单表数据备份,SQL备份,增量备份
数据表备份
不需要通过sql来备份,直接进入到数据库文件夹复制对应的表结果以及数据文件,还原的直接粘贴
数据备份有前提条件,不同的存储引擎有不同的区别。存储引擎即mysql存储数据的方式,主要有两种:innodb 和myisam(免费)
对比myisam 和 innodb 数据的存储方式
innodb只有表结构,数据全部存储到ibdata1文件中
myisam表,数据,和索引全部分开存储
因此:myisam 引擎下的数据表可以直接将三个文件复制到其他数据库中就可以使用,但是innodb 表中的数据不可以,因为只有结构,没有数据
myisam 适合做数据迁移,但是不合适备份,因为占用磁盘空间
单表数据备份
每次备份一张表,只能备份数据,不能备份结构
通常使用:将单表数据导出到文件
(1)备份:从表中选取一部分数据存储到外部文件中
语法:
select */字段列表 into outfile 文件所在路径 from 数据源-- 前提是外部文件不存在
高级处理:
屏幕快照 2017-08-14 下午4.55.26.png 屏幕快照 2017-08-14 下午4.53.28.png 屏幕快照 2017-08-14 下午4.54.25.png(2)还原:
数据还原:将一个外部保存的数据重新恢复到表中(如果表结构不存在,则不能恢复)
语法:
load data infile 文件所在路径 into table 表名[(字段列表)] fileds 字段处理 lines 行处理-- 怎么备份,怎么还原
屏幕快照 2017-08-14 下午5.08.34.png
SQL备份
SQL备份:
系统会对表结构和数据进行处理,编程对应的SQL语句,然后进行备份。还原的时候只要执行SQL指令即可(主要是针对表结构)
备份:MySQL没有提供备份指令,但是需要利用mysql提供的软件mysqldump.exe
mysqldump.exe是一种客户端,需要操作服务器,必须连接认证
基本语法:
mysqldump.exe/mysqldump -hPup 数据库名字 [数据表名1,数据表名2.....] > 外部文件目录(建议使用.sql文件)
- 单表备份
mysqldump -uroot -proot mydatabase my_student > D:/server/temp/student.sql
屏幕快照 2017-08-14 下午5.24.51.png
student.sql文件如下(有锁机制)
屏幕快照 2017-08-14 下午5.29.19.png 屏幕快照 2017-08-14 下午5.30.29.png
- 整库备份
mysqldump.exe/mysqldump -hPup 数据库名字 > 外部文件目录
mysqldump -uroot -proot mydatabase > D:/server/temp/mydatabase.sql
SQL还原:
SQL还原方式有两种
方案一:使用mysql.exe 客户端还原
mysql.exe/mysql -hPup 数据库名 < 备份文件目录
mysql -uroot -proot mydatabase < D:/server/temp/student.sql
方案二:使用SQL指令还原
source 备份文件路径
source D:/server/temp/student.sql;
SQL 备份的优缺点
优点:可以备份结构
缺点:会浪费空间(额外增加SQL指令)
增量备份
不知针对sql数据或者指令备份,而是针对SQL服务器日志文件进行备份
增量备份:指定时间开始备份,备份不会重复,而且所有的操作都会备份