mysql的备份

来源:互联网 发布:unity3d texture2d 编辑:程序博客网 时间:2024/06/17 11:17
Mysql提供了很多中备份的方式: 文件备份, 单表数据备份, SQL备份, 增量备份(日志备份)

一、文件备份
1、文本备份: 直接将表对应的文件进行复制保存
Innodb: 不单要备份结构文件,还要备份整个数据文件ibdata1
Myisam: 直接三个文件(跟其他表没有任何关联)
2、还原文件的
Myisam: 直接将三个文件放到对应的数据库下即可(可以)
Innodb: 将结构文件放到数据库, 但是还要替换ibdata1文件(几乎不可行,因为这样为了恢复某些表需要覆盖掉原有的所有数据,是不可行的)

二、单表数据备份
从表里面将数据按照规则取出来, 存储到外部文件(outfile)中,一次只能针对一张表进行备份, 只能备份数据(不能备份结构)
基本语法: 前提是外部文件不能存在(必须由系统自动创建)
Select 字段列表/* into outfile 文件路径 from 表名 [where条件];  
如:mysql>select * into outfile 'D:/server/temp/student.txt' from student;
以上备份方式都是按照默认的方式进行处理: 可以自动选择处理方式
Select 字段列表/* into outfile 文件路径 [字段处理] [行处理] from 表名 [where条件]; 
字段处理: fields
Terminated by: 每个字段以什么结尾, 默认是”\t”(最后一个字段不用结尾)
Enclosed by: 以什么进行包裹, 默认是””, 没有包裹
Escaped by:特殊字符用什么方式转义, 默认是”\\”
行处理: lines
Starting by: 每行以什么开头,默认是””
Terminated by: 行以什么结尾, 默认是”\r\n”
如:
mysql>-- 单表数据备份: 指定处理方式
    ->select * into outfile 'D:/server/temp/class.txt'
    ->-- 字段处理
    ->fields terminated by '-' enclosed by '"'
    ->-- 行处理
    ->lines starting by 'BEGIN:'
    ->from class;

四、还原
1、单表数据还原
mysql>load data infile 'D:/server/temp/class.txt'
    ->into table class
    ->-- 字段处理
    ->fields terminated by '-' enclosed by '"'
    ->-- 行处理
    ->lines starting by 'BEGIN:';
五、SQL备份
SQL备份不是通过mysql客户端内部执行SQL指令的, 通过mysqldump.exe备份客户端
基本语法:在cmd命令行下:
Mysqldump.exe 连接认证(hPup) 数据库 [数据表1 数据表2...] > 外部备份文件所在路径(.sql)
1、单表备份
C:>mysqldump.exe -h主机名 -P端口 -u用户名 -p密码 数据库名 表名 > 路径.sql
2、多表备份: 表与表之间使用空格分隔
C:>mysqldump.exe -h主机名 -P端口 -u用户名 -p密码 数据库名 表名1 表名2 > 路径.sql
3、整库备份: 指定数据库名字即可
C:>mysqldump.exe -h主机名 -P端口 -u用户名 -p密码 数据库名 > 路径.sql

六、SQL还原
1、使用mysql客户端进行还原
C:>mysql -h主机名 -P端口 -u用户名 -p密码 数据库名 < sql备份文件
2、通过SQL指令实现
mysql>source 路径.sql

注:以上几种方式备份都比较浪费空间(尤其是SQL备份)

六、增量备份
只对改变的东西进行备份: 是针对mysql的系统日志进行备份,指定备份的起始点到终点



0 0
原创粉丝点击