备份: 将已有的数据或者结构进行复制保存: 以防数据或者结构出现问题: 可以从备份的数据中进行还原.
Mysql提供了很多中备份的方式:
- 文件备份
- 单表数据备份
- SQL备份
- 增量备份(日志备份)
一、文件备份
文本备份: 直接将表对应的文件进行复制保存
- Innodb: 不单要备份结构文件,还要备份整个数据文件ibdata1
- Myisam: 直接三个文件(跟其他表没有任何管理)
还原文件
- Innodb: 将结构文件放到数据库, 但是还要替换ibdata1文件(几乎不可行)
- Myisam: 直接将三个文件放到对应的数据库下即可(可以)
文件备份: 数据量很大
二、单表数据备份
单表数据备份: 只能一次针对一张表进行备份, 只能备份数据(结构不行)
备份
从表里面将数据按照规则取出来, 存储到外部文件(outfile)中
基本语法: 前提是外部文件不能存在(必须是自己创建)
select 字段列表/* into outfile 文件路径 from 表名 [where条件];
以上备份方式都是按照默认的方式进行处理: 可以自动选择处理方式
select 字段列表/* into outfile 文件路径 [字段处理] [行处理] from 表名 [where条件];
字段处理: fields
- Terminated by: 以什么结尾, 默认是” ”
- Enclosed by: 以什么进行包裹, 默认是””, 没有包裹
- Escaped by:特殊字符用什么方式转义, 默认是”\”
行处理: lines
- Starting by: 每行以什么开头,默认是””
- Terminated by: 行以什么结尾, 默认是” ”
还原
还原: 从文件中将数据取出塞到表里面
load data infile 文件路径 into table 表名[(字段列表)] [字段处理] [行处理];
三、SQL备份
SQL备份: 将数据表以及数据都通过sql语句进行备份: 以后不管表存不存在都可以进行还原.
SQL备份不是通过mysql客户端内部执行SQL指令: 通过mysqldump.exe备份客户端
备份
mysqldump.exe 连接认证(hPup) 数据库 [数据表1 数据表2...] > 外部备份文件所在路径(.sql)
单表备份
mysqldump.exe -hlocalhost -P3306 -uroot -p123 teach student > d:/server/student.sql
多表备份: 表与表之间使用空格分隔
mysqldump.exe -hlocalhost -P3306 -uroot -p123 teach student class > d:/server/student_class.sql
整库备份: 指定数据库名字即可
mysqldump.exe -hlocalhost -P3306 -uroot -p123 teach > d:/server/teach.sql
还原
可以将备份的SQL语句复制全部,进入到mysql数据库之后执行即可.
还原操作1: 使用mysql客户端进行还原
Mysql -hPup 数据库 < sql备份文件
mysql.exe -hlocalhost -P3306 -uroot -p123 teach < d:/server/student_class.sql
还原操作2: 通过SQL指令实现
source sql文件;
以上几种方式备份都比较浪费空间(尤其是SQL备份)
四、增量备份
只对改变的东西进行备份: 是针对mysql的系统日志进行备份,指定备份的起始点到终点
数据备份: 尽量找一个用户访问量相当少的时候进行备份