数据库——实验12 数据库备份和还原

1. 备份设备的概念和方法

备份设备是指 SQL Server 中存储数据库和事务日志备份副本的载体,备份设备可以被定义成本地的磁盘文件、远程服务器上的磁盘文件、磁带。

在创建备份时,必须选择要将数据写入的备份设备。SQL Server 2005 可以将数据库、事务日志和文件备份到磁盘和磁带设备上。

在 SQL Server中,可以使用sp_addumpdevice 语句创建备份设备,其语法形式如下:

sp_addumpdevice { 'device_type' }

[ ,'logical_name'] [ ,'physical_name'] [ ,{{controller_type l 'device_status'}} ]

说明:

·device_type 表示设备类型,其值可为 disk(磁盘) 和 tape(磁带)。

·logical_name 表示设备的逻辑名称。

·physical_name 表示设备的实际名称。

·controller_type 和 device_status 可选项,可以不必输入。

2. 数据库备份和还原的概念

1)数据库备份

数据库备份可以创建备份完成时数据库内存在的数据的副本,这个副本能在遇到故障时恢复数据库。这些故障包括媒体故障、硬件故障(例如,磁盘驱动器损坏或服务器报废), 用户操作错误(例如,误删除了某个表)、自然灾害等。此外,数据库备份对于例行的工作(例如,将数据库从一台服务器复制到另一台服务器、设置数据库镜像、政府机构文件归档和灾难恢复)也很有用。

对 SQL Server数据库或事务日志进行备份时,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,以便在数据库遭到破坏时能够及时地将其恢复。SQL Server 备份数据库是动态的,在进行数据库备份时,SQL Server允许其他用户继续对数据库进行 操作。执行备份操作必须拥有对数据库备份的权限许可,SQL Server 只允许系统管理员、 数据库所有者和数据库备份执行者备份数据库。备份是数据库系统管理的一项重要内容, 也是系统管理员的日常工作。

2)数据库还原

数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中 还原数据库,数据库还原是指将数据库备份加载到系统中的过程。系统在还原数据库的过 程中,自动执行安全性检查、重建数据库结构以及完成填写数据库内容。安全性检查是还原数据库时必不可少的操作,这种检查可以防止偶然使用了错误的数据库备份文件或者不兼容的数据库备份覆盖已经存在的数据库。SQL Server 还原数据库时,根据数据库备份文件 自动创建数据库结构,并且还原数据库中的数据。

3. 各种备份数据库方法

SQL Server 2005 提供了4种不同的备份方式,分别为:

1)完整备份和完整差异备份

完整备份:即完整地备份整个数据库,同时也备份与该数据库相关的事务处理日志。 完整差异备份:只备份自上次数据库备份后发生更改的数据库,差异备份。

2)部分备份和部分差异备份

3)事务日志备份

事务日志备份序列提供了连续的事务信息链,可支持从完整备份、完整差异备份或文件备份进行快速还原。

4)数据库文件和文件组备份

当时间限制使得备份整个数据库不切实际时,可以备份数据库文件和文件组,而不是备份完整数据库。

4. 使用 T- SQL 语句备份和还原数据库

1)备份整个数据库

使用T-SQL 语句进行备份时,需要使用BACKUP DATABASE语句,语法如下:

BACKUP DATABASE

{ database_name | @database_name_var}

TO

<backup_file>[,...n]

[ with

[ [,] format ]

[ [,] { init | noinit } ]

[ [,] restart ]

]

<backup_file>::={ backup_file_name | @backup_file_evar } | { disk | tape }

={ temp_file_name | @temp_file_name_evar }

说明:

·BACKUP DATABASE : 备份数据库。

·{ database_name | @database_name_var} : 要备份的数据库的名称。可以直接指定数据库名称,也可以使用变量来存储数据库名称。

·TO <backup_file> [,...n] :指定备份文件的位置。可以指定一个或多个备份文件。备份文件可以存储在磁盘或磁带上。

·with : 这是指定备份选项的关键字。

·format :(备份选项之一)用于指定备份文件的格式。如果指定了该选项,备份文件将以新的备份格式进行保存。如果未指定此选项,则备份文件将以与原始备份相同的格式进行保存。

·init | noinit :(备份选项之一)init 表示初始化备份介质并覆盖 现有的备份集。noinit 表示将备份添加到现有备份集中。

·restart :(备份选项之一)用于指示备份操作在出现错误时是否应重新启动。

总体而言,这段 T-SQL 代码的作用是备份指定的数据库到指定的备份文件中,并可以选择指定备份的格式、是否覆盖现有备份、以及在错误时是否重新启动备份操作。

2)还原整个数据库

使用T-SQL 提供的 RESTORE 语句还原数据库,其语法如下:

RESTORE DATABASE

[ from <backup_device [ ],...n>]

[ with

[ [,] file=file_number]

[ [,] move 'logical_file_name' to 'operating_system_file_name' ]

[ [,] replace]

[ [,] { norecovery | recovery l standby=undo_file_name } ]

<backup_device>::={ { backup_device_name | @backup_device_name_evar } | { disk | tape | pipe }

={ temp_backup_device l @temp_backup_device_var }

说明:

·RESTORE DATABASE : 还原数据库的命令。

·[ from <backup_device [ ],...n>] : 指定要从哪些备份设备还原数据库。可以指定一个或多个备份设备。

·with : 这是指定还原选项的关键字。

·file=file_number : 这是还原选项之一,用于指定要还原的备份文件的文件号。每个备份文件都有一个文件号。

·move 'logical_file_name' to 'operating_system_file_name' : 如果数据库文件的物理位置已更改,您可以使用此选项将数据库文件移动到新的位置。logical_file_name是数据库中的逻辑文件名,operating_system_file_name是操作系统中的文件路径和文件名。

·replace : 这是一个还原选项,用于指示是否覆盖现有的数据库。如果指定了该选项,则数据库将被还原并替换为现有数据库。

·norecovery | recovery : (还原选项之一),用于指定还原操作后数据库的状态。norecovery 表示数据库将保持不可用状态,您可以在完成所有还原操作后手动恢复数据库。recovery 表示数据库将被还原并且立即可用。

·standby=undo_file_name : 如果要将数据库设置为 standby 恢复模式,则可以使用此选项指定用于存储 undo 文件的位置和名称。

总体而言,这段 T-SQL 代码的作用是从指定的备份设备还原数据库,并可以选择指定要还原的备份文件、移动数据库文件的位置、是否替换现有数据库以及数据库的恢复状态。

·<backup_file>::=: 备份文件的语法声明

·{ backup_file_name | @backup_file_evar }: 备份文件的名称(备份文件的名称/变量存储备份文件的名称)。

·{ disk | tape }: 备份文件的类型。磁盘(disk)或磁带(tape)。

·={ temp_file_name | @temp_file_name_evar }: 备份文件的临时名称。

相关推荐
simpleGq2 分钟前
Redis知识点整理 - 脑图
数据库·redis·缓存
NiNg_1_2349 分钟前
关系型数据库和非关系型数据库详解
数据库·oracle·nosql
paopaokaka_luck10 分钟前
基于Spring Boot+Vue的多媒体素材管理系统的设计与实现
java·数据库·vue.js·spring boot·后端·算法
python资深爱好者15 分钟前
NoSQL数据库与关系型数据库的主要区别
数据库·oracle·nosql
sj116373940320 分钟前
Kafka参数了解
数据库·分布式·kafka
给我整点护发素40 分钟前
Flink执行sql时报错
大数据·sql·flink
日里安1 小时前
8. 基于 Redis 实现限流
数据库·redis·缓存
EasyCVR2 小时前
ISUP协议视频平台EasyCVR视频设备轨迹回放平台智慧农业视频远程监控管理方案
服务器·网络·数据库·音视频
Elastic 中国社区官方博客2 小时前
使用真实 Elasticsearch 进行更快的集成测试
大数据·运维·服务器·数据库·elasticsearch·搜索引擎·集成测试
明月与玄武3 小时前
关于性能测试:数据库的 SQL 性能优化实战
数据库·sql·性能优化