文章目录

  • 何为备份还原
  • 数据表备份
  • 单表备份
  • SQL备份



何为备份还原

备份:将当前已有的数据或者记录保留;
还原:将已经保留的数据恢复到对应的表中;

为了防止数据丢失,保存数据记录 ;

数据备份还原的方式:数据表备份,单表数据备份,SQL备份


数据表备份

不需要通过 SQL 语句操作,直接进去数据库文件夹复制对应的表结构以及数据文件,将它们作为备份,以后还原的时候,直接将它们再放回去 ;

数据表备份的前提:存储引擎必须是 myisam

mysql 的常用的存储引擎有:innodbmyisam

  • innodb :数据库文件中只有表结构,至于数据,则全部存储在 ibdata1 文件中 ;
  • myisam:表、数据结构和索引,全部分开单独存在数据库文件夹下 ;

因此,数据表备份,对于 myisam 存储引擎,是非常使用的,因为表的结构、数据都在那,直接复制走即可;

而对于 innodb 则只能复制表的结构,这样是无意义的 ,并且就算复制过去,show tables 是可以看到看到表的,但是无法对表进行操作 ;


单表备份

每次只能备份一张表,只能备份数据(表结构是不能备份的) ;

基于上面的特点: 将表中的数据进行导出到文件 ;

从表中选出一部分数据保存到外部的文件中(outfile),前提是外部文件不存在

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

mysql> select * into outfile 'D:/student.txt' from student ;
Query OK, 8 rows affected

数据导出到文件中的时候,记住千万不要用记事本打开,它会改变数据的编码格式,数据在数据库中可能是utf8 ,用记事本打开就会被强行改成 gbk

editplus 打开导出文件:

1	andy	1
2	sas	1
3	white	2
2	an	1
5	hany	1
6	yang	2
7	Wily	2
11	gery	2

数据中间的是 tab 键 ;

我们可以指定格式;

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


- fields :字段处理

		enclosed by :字段使用什么内容包裹,默认是'',空字符串 ;
		terminated by:字段以什么结束,默认是'\t',`tab` 键 ;
		Escaped by :特殊符号使用什么方式处理,默认是 '\\',即转义 ;
		

 - lines 行处理

		starting by :每行以什么开始,默认是'',空字符串 ;
		terminated by:每行以什么结束,默认是'\r\n' ,即换行符 ;


mysql> select * into outfile 'd:/stu.txt' 
	-> fields 
	-> enclosed by '"' 
	-> terminated by '|' 
	-> lines 
	-> starting by 'start:' 
	-> from student ;
Query OK, 8 rows affected

editplus 打开导出文件:

start:"1"|"andy"|"1"
start:"2"|"sas"|"1"
start:"3"|"white"|"2"
start:"2"|"an"|"1"
start:"5"|"hany"|"1"
start:"6"|"yang"|"2"
start:"7"|"Wily"|"2"
start:"11"|"gery"|"2"

格式跟我们指定的一样 ;

使用这种方式备份的数据还原:

将一个在外部保存的数据重新恢复到表中(表必须存在,也就是表结构必须存在)
数据在导出的时候,怎么处理的,导入的时候也要对应的处理 ;

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


mysql> load data infile 'd:/stu.txt' into table student 
    -> fields 
    -> enclosed by '"'
    -> terminated by '|'
    -> lines
    -> starting by 'start:' ;
Query OK, 8 rows affected
Records: 8  Deleted: 0  Skipped: 0  Warnings: 0

SQL备份

备份的是 SQL 语句 ,系统会对 表结构以及数据 进行处理,将它们都变成对应的SQL语句 ;,然后进行备份,还原的时候,mysql 会执行对应的 sql 指令,将表和数据都恢复 ;

mysql 并没有提示备份指令,需要使用 mysql 提供的软件 :mysqldump.exe

mysqldump -hPup 数据库名字 [数据表1 [数据表2 ...]] > '备份文件目录' 
(不要封号结尾,因为就不是sql环境)

h是host,主机
P是post,端口
u是user,用户
p是password,密码

不写数据表,就是整个数据库备份 ;

在 cmd 中使用 :

mysqldump -uroot -proot database student > d:/stu.sql

查看文件,可以看到表结构和数据都得到了备份 :

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int(11) NOT NULL default '0',
  `name` varchar(10) default NULL,
  `sex` varchar(10) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*!40000 ALTER TABLE `student` DISABLE KEYS */;
LOCK TABLES `student` WRITE;
INSERT INTO `student` VALUES (1,'andy','1'),(2,'sas','1'),(3,'white','2'),(2,'an','1'),(5,'hany','1'),(6,'yang','2'),(7,'Wily','2'),(11,'gery','2');
UNLOCK TABLES;

数据还原:

  1. 使用mysql客户端 (在CMD里面使用)
    是不需要指定表名的,备份的 sql 里面有表结构 ;
mysql -HPup 数据库名字 < 备份文件目录

mysql -uroot -proot database < d:/stu.sql (一样的,不需要封号)
  1. 使用 SQL 指令还原(在 mysql 里面使用)
语法:
source 备份文件路径

操作:

mysql> use `database` ;
Database changed
mysql> source d:stu.sql ;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 8 rows affected (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

border="0" src="//music.163.com/outchain/player?type=3&id=1369010786&auto=1&height=20" width="1" height="0">