介质集、介质簇和备份集

包含一个或多个备份介质的集合的备份构成一个介质集。“介质集”是“备份介质”(磁带或磁盘文件)的有序集合,使用固定类型和数量的备份设备向其写入一个或多个备份操作。给定介质集使用磁带机或磁盘驱动器,但不能同时使用两者。例如,与介质集关联的备份设备可能是三个名为 \\.\TAPE0、\\.\TAPE1 和 \\.\TAPE2 的磁带机。该介质集仅包含磁带,最少需要三个磁带(每个磁带机一个磁带)。备份设备的类型和数量是在创建介质集时建立的,不能更改。但是,如有必要,可以在备份和还原操作之间将给定设备替换为同一类型的设备。

介质集是在备份操作过程中通过格式化备份介质从而在备份介质上创建的。有关详细信息,请参阅创建新媒体集。设置格式后,每个文件或磁带都包含介质集的介质标头,可以开始接收备份内容。有了标头后,备份操作会将指定数据备份到为该操作指定的所有备份设备中的备份介质。

注意注意

可以镜像介质集,以防介质卷(磁带或磁盘文件)被破坏。有关详细信息,请参阅使用镜像备份介质集

SQL Server 2008 Enterprise 中引入了备份压缩。从 SQL Server 2008 R2 开始,SQL Server 2008 R2 Standard 和所有更高版本都支持备份压缩。SQL Server 2008 的每个版本和更高版本都可以还原已压缩的备份。压缩和未压缩的备份不能在一个介质集中共存。有关详细信息,请参阅备份压缩 (SQL Server)

介质簇

“介质簇”由在介质集中的单个非镜像设备或一组镜像设备上创建的备份构成。介质集所使用的备份设备的数量决定了介质集中的介质簇的数量。例如,如果介质集使用两个非镜像备份设备,则该介质集包含两个介质簇。

注意注意

在镜像介质集中,所有介质簇也是镜像的。例如,如果使用六个备份设备来设置介质集的格式,其中使用了两个镜像,则有三个介质簇,每个介质簇包含两个相同的备份数据副本。有关镜像介质集的详细信息,请参阅使用镜像备份介质集

介质簇中的每个磁带或磁盘都分配了“介质序列号”。磁盘的介质序列号通常为 1。在磁带介质簇中,起始磁带的序列号为 1,第二盘磁带的序列号为 2,依此类推。有关详细信息,请参阅使用媒体集及媒体簇

介质标头

备份介质(磁盘文件或磁带)的每个卷都包含介质标头,介质标头是在第一次使用磁带(或磁盘)执行备份操作时创建的。标头在重新设置介质格式之前保持不变。

介质标头包含标识介质(磁盘文件或磁带)及其在所属介质簇中的位置所需的所有信息。此信息包括:

  • 介质的名称。

    介质名称是可选的,但建议始终使用能够明确标识介质的名称。介质名称由设置介质格式的用户指定。

  • 介质集的唯一标识号。

  • 介质集中的介质簇数。

  • 包含此介质的介质簇的序列号。

  • 介质簇的唯一标识号。

  • 介质簇中此介质的序列号。对于磁盘文件,此值始终为 1。

  • 介质说明中是包含 MTF 介质标签还是包含介质说明。

    注意注意

    用于备份或还原操作的所有介质都使用称为 Microsoft 磁带格式 (MTF) 的标准备份格式。用户可以使用 MTF 指定磁带标签,标签中包含特定于 MTF 的说明。SQL Server 保留由其他应用程序写入的任何 MTF 介质标签,但其本身不会写入 MTF 介质标签。

  • Microsoft 磁带格式介质标签或介质说明(自由格式文本)。

  • 用于创建标签的备份软件的名称。

  • 格式化介质的软件供应商的唯一供应商标识号。

  • 创建标签的日期和时间。

  • 介质集中的镜像数 (1-4),1 表示设备未镜像。

SQL Server 2008 可以处理使用早期版本的 SQL Server 设置格式的介质。

重要说明重要提示

由于介质标头发生了变化,SQL Server 7.0 版和 SP4 之前的 SQL Server 2000 无法解释使用 SQL Server 2008 格式化的介质。但是,SQL Server 2000 SP4 支持介质标头中的更改。

读取备份设备中的介质的介质标头

备份集

成功的备份操作将向介质集中添加一个“备份集”。从备份所属的介质集方面对备份集进行说明。如果备份介质只包含一个介质簇,则该簇包含整个备份集。如果备份介质包含多个介质簇,则备份集分布在各个介质簇之间。在每个介质上,备份集都包含说明备份集的标头。

下例显示一个 Transact-SQL 语句,该语句使用三个磁带机作为备份设备,为 AdventureWorks2008R2 数据库创建一个名为 MyAdvWorks_MediaSet_1 的介质集。

BACKUP DATABASE AdventureWorks2008R2
TO TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2'
WITH 
   FORMAT,
   MEDIANAME = 'MyAdvWorks_MediaSet_1';

如果成功,此备份操作将生成一个新的介质集,该介质集包含一个新介质标头和一个分布在三个磁带上的备份集。下图说明了这些结果:

3 个磁带上的介质标头和第一个备份集

通常,创建介质集后,后续备份操作将依次向介质集追加其备份集。备份集使用的所有介质构成了介质集,而与所涉及到的介质或备份设备的数量无关。备份集按照其在介质集中的位置依次编号,从而使您能够指定还原哪个备份集。

介质集的每个备份操作都必须写入相同数量和类型的备份设备。如果使用多个设备,则与第一个备份集相同,每个后续备份集的内容都分布在所有设备的备份介质中。为了继续上面的示例,第二个备份操作(差异备份)将向同一介质集追加信息:

BACKUP DATABASE AdventureWorks2008R2
TO TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2'
WITH 
   NOINIT,
   MEDIANAME = 'AdventureWorksMediaSet1',
   DIFFERENTIAL;
注意注意

NOINIT 选项是默认选项,但为清楚起见,要包括此选项。

如果第二个备份操作成功,将向介质集写入第二个备份集,并按以下方式分布备份内容:

第二个备份集分散在 3 个介质集磁带上

在还原备份时,您可以使用 FILE 选项来指定想要使用的备份。下面的示例展示了 FILE **=**backup_set_file_number 子句的使用方法,它在还原 AdventureWorks2008R2 数据库的完整数据库备份并随后还原位于相同介质集上的数据库差异备份时使用了该子句。介质集使用了三个备份磁带,它们位于磁带机 \\.\tape0、tape1 和 tape2 上。

RESTORE DATABASE AdventureWorks2008R2 FROM TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2'
   WITH 
   MEDIANAME = 'AdventureWorksMediaSet1',
   FILE=1, 
   NORECOVERY;
RESTORE DATABASE AdventureWorks2008R2 FROM TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2' 
   WITH 
   MEDIANAME = 'AdventureWorksMediaSet1',
   FILE=2, 
   RECOVERY;
GO

历史记录表存储了介质集及其介质簇和备份集的相关信息,有关历史记录表的信息,请参阅查看有关备份的信息

介质集中备份介质的数量取决于下列几个因素:

  • 备份设备的数量

  • 备份设备的类型

  • 备份集的数量

查看特定备份设备中的备份集