数据库备份与恢复
理论
-
故障
- 事务内部故障:数据库管理系统强行回滚事务
- 系统故障(断电,操作系统崩溃等):数据库管理系统重做提交事务,回滚未提交事务,将数据库恢复到一致状态
- 介质故障(磁盘损坏):无法恢复
- 计算机病毒
-
备份:定期对数据库中数据转存成副本
- 备份规模分类
- 完全备份:备份全部信息
- 差异备份:完全备份后,对数据库修改操作备份
- 部分备份:备份部分信息
- 备份状态分类
- 连接备份(在线备份):数据库正常使用时对数据库备份
- 脱机备份(离线备份):没有用户连接时对数据库备份
- 备份方式分类
- 物理备份:直接拷贝数据库的物理文件
- 逻辑备份:数据导出操作
- 备份规模分类
-
恢复:数据库故障后,用副本恢复数据库
- 恢复程度分类
- 完全恢复:恢复到出现故障时刻
- 不完全恢复:恢复到出现故障时刻之前
- 恢复方式分类
- 物理恢复:直接拷贝数据库的物理文件
- 逻辑恢复:数据导入操作
- 恢复程度分类
-
日志文件(重做日志文件)
- 记录事务对数据库进行的更新操作
- 数据库故障后根据日志文件可完全恢复数据库
- 先写日志文件,后写数据文件
MySQL中的备份和恢复
物理备份:将表结构以及表数据都保存在文件中
mysqldump -u 用户名 -p 数据库 > 要保存的文件路径
//备份整个数据库
mysqldump -u 用户名 -p 数据库 表名1 表名2 ...> 要保存的备份文件路径
//备份数据库下的某张表
mysqldump -u 用户名 -p 数据库 < 数据库备份文件路径
//恢复整个数据库
//当然也可以手动创建数据库后使用source命令执行备份数据库脚本文件
逻辑备份:只将数据备份
select * from 表名 into outfilr '数据文件路径';
-- 将查询结果输出到文件中
load data infile '数据文件路径' into table 表名;
-- 装载数据文件到表中
Comments NOTHING