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

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

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:导出触发器
  • --skip-lock-tables:表不会被锁定,但是表数据备份不一定完整
-- 单表备份
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服务器的日志文件进行备份。

指定时间段开始进行备份,备份数据不会重复,而且所有的操作都会备份(大项目都用增量备份)。

转载于:https://my.oschina.net/programs/blog/1789635

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值