一、数据备份与还原
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 tabl