mysql中的数据备份与还原

一、有三种备份方式:

  1. 数据表文件备份

  2. 单表数据备份

  3. SQL备份

  4. 增量备份

二、mysql中的存储引擎

  主要有两种:myisam 和 innodb.  -- 免费的

  其他收费的还有:BDB, Memory, Archive

  innodb的存储方式:表结构单独存放,所有数据都存储在ibdata1文件中。

  myisam的存储方式:表、数据和索引全部单独分开存储。

  

二、数据表文件备份与还原

  直接复制数据库目录下的文件夹复制对应的表结构和数据文件,还原的时候直接放回去即可。

  但是此方法根据不同的存储引擎有不同的区别:

  innodb下,因为除了表结构外其他数据都在ibdata1文件中,所以还原到本来的数据库可以,跨数据库时表将不能使用。

  myisam下,因为表、数据和索引全部单独分开存储,所以只需要复制这三个文件,就可以在任意数据库进行还原使用。

三、单表数据备份与还原

  1. 数据备份

    每次只能备份一张表,且只能备份数据,不能备份表结构。通常用于导出数据到文件。

    select */字段列表 into outfile '文件路径' [fields 字段处理 lines 行处理] from 数据源;  -- 文件不存在才能导出

    fields字段处理:

      enclosed by: 字段使用什么内容包裹,默认为'';

      terminated by: 字段使用什么内容结束,默认为'\t';

      escaped by: 特殊符号用什么方式处理,默认'\\' 反斜杠转义;

    lines行处理:

      starting by: 每行以什么开始,默认为'';

      terminated by: 每行以什么结束,默认为换行符;

    示例:

1 select * into outfile 'D:\BaiduNetdiskDownload\mysql\class.sql' 
2 fields terminated by '---' enclosed by '"' 
3 lines starting by 'be:' terminated by 'ed\r\n'
4 from my_class;

  2. 数据还原

    必须保证表结构存在,才能进行数据还原。

    lode data infile '文件路径' into table 表名 fields 字段处理 lines 行处理;  -- 怎么备份的,就怎么还原

    示例:

1 load data infile 'D:\BaiduNetdiskDownload\mysql\class.sql' into table my_class
2 fields terminated by '---' enclosed by '"' 
3 lines starting by 'be:' terminated by 'ed\r\n';

三、 SQL备份

  1.数据备份

     备份的是SQL语句,需要使用mysql提供的mysqldump.exe软件。

     mysqldump/mysqldump.exe -hPup 数据库名 [表名1[,表名2...]] > 外部文件路径  -- 可以多表备份, 如果不写表名,表示整库备份

 mysqldump -uroot -p jdbc my_student > D:\BaiduNetdiskDownload\mysql\student.sql -- 单表备份
 
 mysqldump -uroot -p jdbc> D:\BaiduNetdiskDownload\mysql\jdbc.sql -- 整库备份

  2. 数据还原

    ① 使用mysql客户端还原:

    mysql.ext/mysql -hPup 数据库名< 备份文件路径

    

mysql -uroot -p jdbc < D:\BaiduNetdiskDownload\mysql\student.sql

 

    ②使用SQL指令还原:

    source 备份文件路径;

source D:\BaiduNetdiskDownload\mysql\student.sql;

 

四、增量备份

  此方式针对mysql服务器的日志文件进行备份,可以指定时间段进行备份,因此备份数据不会重复,并且中间的操作过程也会备份。

posted @ 2017-02-09 21:42  Java_xb  阅读(712)  评论(0编辑  收藏  举报