您的位置:首页 > 数据库 > MySQL

MySQL系列(十二):备份还原

2018-04-04 00:00 204 查看
为了防止数据丢失、被盗、误操作等,我们需要保护数据记录,要进行相应的备份。

mysql数据的备份就是将当前已有的数据或者记录保留下来,mysql数据的还原就是将已经保留的数据恢复到对应的库表中。

一、数据表备份

直接进入到数据库文件夹复制对应的表结构以及数据文件,以后还原的时候,直接将备份的内容放进去即可。数据表备份根据不同的存储引擎有不同的区别。

Innodb:只有表结构,数据全部存储到ibdata1文件中。

Myisam:表、数据和索引全部单独分开存储(.rfm结构、.MYD数据、.MYI索引)。

这种文件备份通常适用于myisam存储引擎,直接复制三个文件,然后直接放到对应的数据库下即可以使用。

二、单表备份

每次只能备份一张表,只能备份数据(表结构不能备份),通常将表中的数据进行导出到文件。

基本备份:

select */字段列表 into outfile 文件所在路径 from 数据源; -- 前提是外部文件不存在

-- 单表数据备份,基本备份
select * into outfile '/home/sqlbackup/student.txt' from student;
select * into outfile '/home/sqlbackup/class.txt' from class;

高级备份:

自己指定字段和行的处理方式。

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

fields:字段处理

enclosed by:字段使用什么内容包裹, 默认是''(空字符串)

terminated by:字段以什么结束, 默认是"\t"( tab)

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

lines:行处理

starting by:每行以什么开始,默认是''(空字符串)

terminated by:每行以什么结束,默认是"\r\n"(换行符)

-- 指定备份处理方式
select * into outfile '/home/sqlbackup/class1.txt'

fields                   -- 字段处理
enclosed by '"'              -- 数据使用双引号包裹
terminated by '|'            -- 使用竖线分隔字段数据

lines                    -- 行处理
starting by 'START:'

from class;

数据还原:

--怎么备份的怎么还原

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

-- 还原数据
load data infile '/home/sqlbackup/class1.txt'
into table class

fields              -- 字段处理
enclosed by '"'          -- 数据使用双引号包裹
terminated by '|'        -- 使用竖线分隔字段数据

lines               -- 行处理
starting by 'START:';


三、SQL备份

备份的是SQL语句,系统会对表结构以及数据进行处理,变成对应的SQL语句,然后进行备份。还原的时候只要执行SQL指令。

备份:

mysqldump -uUSER_NAME -pPASSWORD [其他选项] DB [其他数据库库表] > 文件路径

--default-character-set:设置字符集

--single-transaction:将导出设置成事务

--no-data:导出的SQL脚本中,将只包含创建表的create 语句。

--add-drop-table:导出的脚本中,包含 drop table if exists

--routines:导出存储过程及函数

--events:导出事件

--triggers:导出触发器

-- 单表备份
mysqldump -uroot -p123456 mydb student > /home/sqlbk/student.sql

-- 单库备份
mysqldump -uroot -p123456 mydb > /home/sqlbk/database.sql

-- 备份指定的多个数据库
mysqldump -uroot -p123456 --databases db1 db2 > /home/sqlbk/db1db2.sql

-- 备份所有的数据库
mysqldump -uroot -p123456 --all-databases > roverliang.sql

还原:

-- 还原数据,mysql客户端还原
mysql -uroot -p123456 mydb < /home/sqlbk/student.sql

-- SQL指令还原SQL备份
source /home/sqlbk/student.sql;


四、增量备份

不是针对数据或者SQL指令进行备份,是针对mysql服务器的日志文件进行备份。

指定时间段开始进行备份,备份数据不会重复,而且所有的操作都会备份(大项目都用增量备份)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql mysql备份还原