介质集、介质簇和备份集 (SQL Server)

本主题介绍 SQL Server 备份和还原的基本备份介质术语,适用于对 SQL Server不熟悉的读者。 本主题介绍 SQL Server 用于备份介质的格式、备份介质和备份设备之间的对应关系、备份介质上备份的组织结构,以及介质集和介质簇的若干注意事项。 本主题还介绍在第一次使用备份介质或在使用新介质集替代旧介质集之前对备份介质进行初始化和格式化的步骤,如何覆盖介质集中的旧备份集,以及如何将新备份集追加到介质集。

注意

有关SQL Server备份到 Azure Blob 存储服务的详细信息,请参阅使用 Azure Blob 存储 服务SQL Server备份和还原

术语和定义

介质集 (介质集 (media set)) 备份介质(磁带或磁盘文件)的有序集合,使用固定类型和数量的备份设备向其写入了一个或多个备份操作。

介质簇 (介质簇 (media family)) 在介质集中的单个非镜像设备或一组镜像设备上创建的备份。

备份集 (备份集 (backup set)) 通过成功的备份操作添加到介质组的备份内容。

介质集、介质簇和备份集概述

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

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

注意

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

SQL Server 2008 或更高版本可以读取压缩备份。 有关详细信息,请参阅备份压缩 (SQL Server)

介质簇

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

注意

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

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

介质标头

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

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

  • 介质的名称。

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

  • 介质集的唯一标识号。

  • 介质集中的介质簇数。

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

  • 介质簇的唯一标识号。

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

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

    注意

    用于备份或还原操作的所有介质都使用名为 的标准备份格式SQL Server保留由另一个应用程序写入的任何 MTF 媒体标签,但不写入 MTF 媒体标签。

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

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

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

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

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

SQL Server 2014 可以处理SQL Server早期版本格式化的媒体。

备份集

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

以下示例演示一个 Transact-SQL 语句,该语句使用三个磁带驱动器作为备份设备,为 AdventureWorks2012 数据库创建名为 的MyAdvWorks_MediaSet_1媒体集:

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

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

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

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

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

BACKUP DATABASE AdventureWorks2012
TO TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2'
WITH 
   NOINIT,
   MEDIANAME = 'AdventureWorksMediaSet1',
   DIFFERENTIAL

注意

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

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

第二个备份集分布在 3 个介质集磁带中

在还原备份时,您可以使用 FILE 选项来指定想要使用的备份。 以下示例演示在还原 AdventureWorks2012 数据库的完整数据库备份后,在同一介质集上还原差异数据库备份时,如何使用 FILE =backup_set_file_number 子句。 介质集使用了三个备份磁带,它们位于磁带机 \\.\tape0tape1tape2上。

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

有关存储媒体集及其介质簇和备份集信息的历史记录表的信息,请参阅备份历史记录和标头信息 (SQL Server)

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

  • 备份设备的数量

  • 备份设备的类型

  • 备份集的数量

使用介质集及介质簇

本节讨论使用介质集和介质簇的若干注意事项。

创建新介质集

若要创建新介质集,必须格式化备份介质(一个或多个磁带或磁盘文件)。 格式化进程会对备份介质进行以下更改:

  1. 删除旧标头(如果存在),从而有效地删除备份介质中以前的内容。

    格式化磁带设备会删除当前装入的磁带中以前所有内容。 格式化磁盘只影响您为备份操作指定的文件。

  2. 向每个备份设备中的备份介质(磁带或磁盘文件)写入新的介质标头。

备份到现有介质集

当备份到某个现有介质集时,您可以使用以下两个选项:

  • 追加到现有备份集。

    为了尽可能利用可用空间,通常将新的备份集追加到现有介质集。 追加到备份时会保留所有以前的备份。 有关详细信息,请参阅本节后面的 追加到现有备份集

    注意

    追加是 BACKUP 的默认行为,可以通过使用 NOINIT 选项显式指定追加。

  • 使用当前备份覆盖所有现有备份集,保持当前介质标头位置不变。

    SQL Server 备份提供防止意外覆盖介质的安全措施。 但是,备份集到达预定义的到期日期时,备份会自动覆盖备份集。

    对于磁带标头,适当地保留标头还是很有帮助的。 有关详细信息,请参阅本节后面的 覆盖备份集

    注意

    使用 BACKUP 语句中的 INIT 选项可指定覆盖现有备份集。

追加到现有备份集

可以将来自相同或不同数据库的、在不同时间执行的备份存储在同一个介质上。 通过将其他备份集追加到现有介质上,介质上以前的内容保持不变,新的备份在介质上最后一个备份的结尾处写入。

默认情况下, SQL Server 始终在介质上追加新的备份。 只能在介质的结尾处追加备份。 例如,如果介质卷包含五个备份集,则不能跳过前三个备份集而用新的备份集覆盖第四个备份集。

如果将 BACKUP WITH NOREWIND 用于磁带备份,则磁带在操作结束时将保持打开状态。 这使您得以在磁带中追加其他备份,而不用倒带然后再次往前扫描以查找最后一个备份集。 可以在 sys.dm_io_backup_tapes 动态管理视图中找到打开的磁带驱动器的列表;有关详细信息,请参阅 sys.dm_io_backup_tapes (Transact-SQL)

Microsoft Windows 备份和 SQL Server 备份可以共享同一介质,但它们之间不能相互操作。 SQL Server 备份不能备份 Windows 数据。

重要

SQL Server 2008 或更高版本可以读取压缩备份。 有关详细信息,请参阅备份压缩 (SQL Server)

覆盖备份集

覆盖现有备份集是使用 BACKUP 语句的 INIT 选项指定的。 此选项将覆盖介质上的所有备份集并保留介质标头(如果有)。 如果没有介质标头,则创建一个标头。

对于磁带标头,适当地保留标头还是很有帮助的。 对于磁盘备份介质,只覆盖备份操作中指定的备份设备所使用的文件;磁盘上的其他文件不受影响。 覆盖备份时,保留现有的所有介质标头,同时将新的备份创建为备份设备中的第一个备份。 如果没有现有的介质标头,将自动编写一个带相关介质名称和介质描述的有效介质标头。 如果现有的介质标头无效,备份操作将终止。 如果介质为空,则使用给定的 MEDIANAME、MEDIAPASSWORD 和 MEDIADESCRIPTION(如果存在)生成新的介质标头。

重要

从 2012 SQL Server开始,MEDIAPASSWORD 选项已停止用于创建备份。 但仍可以还原使用密码创建的备份。

存在下列任一条件时不覆盖备份介质:

  • 介质上的现有备份尚未过期。 (如果指定 SKIP,则不检查过期。)

    过期日期将指定备份过期的日期,并可以由另一个备份覆盖。 创建备份时可以指定过期日期。 默认情况下,过期日期由 sp_configure 设置的 media retention选项确定。 有关详细信息,请参阅 sp_configure (Transact-SQL)

  • 介质名称(如果有)与备份介质上的名称不匹配。

    介质名称是一个描述性名称,用于方便地识别介质。

如果确实想要覆盖现有介质(例如知道不再需要磁带上的备份),则可以显式跳过这些检查。

如果备份介质受 Microsoft Windows 密码保护,则 Microsoft SQL Server 不会写入介质。 若要覆盖有密码保护的介质,必须重新初始化该介质。

序列号

对于介质集中的多个介质簇或介质簇中的多个备份介质,正确的顺序很重要。 因此,备份按以下方式分配序列号:

  • 介质集中的有序介质簇

    在介质集中,根据介质簇在介质集中的位置,按顺序给介质簇进行编号。 媒体簇号记录在 backupmediafamily 表的 family_sequence_number 列中。

  • 介质簇中的物理介质

    介质序列号指示介质簇中的物理介质的顺序。 对于第一个备份介质,序列号是 1。 第一个备份介质的标记为 1,第二个介质(第一个延续磁带)的标记为 2,依此类推。 在还原备份集时,介质序列号可以确保负责还原备份的操作员按正确的顺序装入介质。

多个设备

当您使用多个磁带机或磁盘文件时,请注意以下事项:

  • 备份时的注意事项:

    由备份操作创建的整个介质集必须用于所有后续备份操作。 例如,如果介质集是使用两台磁带备份设备创建的,则涉及相同介质集的所有后续备份操作都必须使用两台备份设备。

  • 还原时的注意事项:

    对于任何从磁盘备份进行的还原以及任何联机还原,必须同时装入全部介质簇。 对于从磁带备份进行的脱机还原,可以在数量少于介质簇的备份设备中处理介质簇。 必须在每一介质簇已完全处理之后才能开始处理另一个介质簇。 介质簇总是并行处理的,除非使用单个设备还原介质簇。

Related Tasks

创建新介质集

在现有介质上追加新的备份

覆盖所有现有备份集

设置过期日期

查看介质序列号和簇序列号

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

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

另请参阅

备份和还原SQL Server数据库备份和还原期间可能出现的媒体错误 (SQL Server) 备份历史记录和标头信息 (SQL Server) 镜像备份媒体集 (SQL Server) BACKUP (Transact-SQL) RESTORE (Transact-SQL) RESTORE REWINDONLY (Transact-SQL) sp_configure (Transact-SQL)