5.14学习总结
数据库第十二章 备份和恢复数据库
12.1 备份数据库
备份数据库就是将数据库中的数据以及保证数据库系统正常运行的有关信息保存起来,以备份恢复数据库时使用、
12.1.1 为什么要进行数据备份
主要目的是为了防止数据的丢失。
造成数据丢失的原因包括如下几种情况:
存储介质故障;
用户的操作错误;
服务器故障; 由
于病毒的侵害而造成的数据丢失或损坏。
由于自然灾害而造成的数据丢失或损坏。
12.1.2 备份内容及备份时间
备份内容 :系统数据库 用户数据库
备份时间: 系统数据库:修改之后备份 用户数据库:周期性备份
12.1.3 备份设备
永久备份设备 在备份之前需要预先建立
临时备份设备 不需要预先建立,在备份时直接使用
用T-SQL语句创建备份设备
sp_addumpdevice [ @devtype = ]‘device_type‘ ,[ @logicalname = ]‘logical_name‘ ,[ @physicalname = ]‘physical_name‘ [ @devtype = ] ‘device_type’:备份设备的类型。 Disk:磁盘 Type:磁带
12.1.4 备份类型
完整备份:
恢复的基线。 在备份时不影响用户对数据库的操作。 备份数据文件、数据库对象和数据的信息。 备份备份过程中发生的活动。
差异备份:
备份从上次完整备份之后改变的内容 备份差异备份过程中发生的活动 比完整备份节约时间
事务日志备份:
备份从上次日志备份之后的日志记录 备份完成后要截断日志
12.1.5 备份策略
完整备份
完整备份 + 日志备份
完整备份 + 差异备份 + 日志备份
12.1.6 实现备份
用T-SQL语句备份数据库
BACKUP DATABASE 数据库名 TO {<备份设备名>}|{DISK|TAPE}={'物理备份文件名'} [ WITH [ DIFFERENTIAL ] [ [ , ] { INIT | NOINIT } ] ] DIFFERENTIAL:进行差异备份; INIT:本次备份数据库将重写备份设备; NOINIT:本次备份数据库将追加到备份设备上。
用T-SQL语句备份日志
BACKUP LOG 数据库名 TO {<备份设备名>}|{DISK |TAPE}={'物理备份文件名'} [ WITH [ { INIT | NOINIT } ] [ { [ , ] NO_LOG | TRUNCATE_ONLY | NO_TRUNCATE } ] ] NO_LOG和TRUNCATE_ONLY:备份完日志后截断不活动日志。 NO_TRUNCATE:备份完日志后不截断不活动日志。
12.2 恢复数据库
12.2.1 恢复的顺序
1. 恢复最近的完整备份; 2. 恢复最近的差异备份(如果有); 3. 恢复自差异备份之后的所有日志备份(按备份的先后顺序)。
用T-SQL恢复数据库
RESTORE DATABASE 数据库名 FROM 备份设备名 [ WITH FILE = 文件号 [ , ] NORECOVERY [ , ] RECOVERY ] FILE = 文件号:标识要还原的备份,文件号为1表示备份设备上的第一个备份。 NORECOVERY:表明对数据库的恢复操作还没完成。使用此选项恢复的数据库是不可用的,但可以继续恢复后续的备份。 RECOVERY:表明对数据库的恢复操作已经完成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本