在备份操作过程中,将要备份的数据(即“备份数据”)写入物理备份设备。“物理备份设备”是指磁带机或操作系统提供的磁盘文件。可以将备份数据写入 1 到 64 个备份设备。如果备份数据需要多个备份设备,则所有设备必须对应于一种设备类型(磁盘或磁带)。


一、备份设备

  SQL Server 早期版本需要在配置备份设备之后才能备份数据库。对于 SQL Server 2008,不需要明确地定义备份设备。不过,备份设备提供了一种简单的方式,用来确保多次创建的备份具有相同的文件名和位置。通过使用一致的名称和保存位置,可以更加容易地管理备份和还原过程。

  “逻辑备份设备”是指向特定物理备份设备(磁盘文件或磁带机)的可选用户定义名称。通过逻辑备份设备,您可以在引用相应的物理备份设备时使用间接寻址。

230842168.png

  磁盘备份设备是指包含一个或多个备份文件的硬盘或其他磁盘存储介质。备份文件是常规操作系统文件。指定备份文件时,应输入其完整路径和文件名。如果您在备份到文件时仅指定文件名或相对路径,则备份文件将存储到默认备份目录中。

  如果在备份操作将备份数据追加到介质集时磁盘文件已满,则备份操作会失败。备份文件的最大大小由磁盘设备上的可用磁盘空间决定,因此,备份磁盘设备的适当大小取决于备份数据的大小。

  重要提示: 我们建议备份磁盘应不同于数据库数据和日志的磁盘。这是数据或日志磁盘出现故障时访问备份数据必不可少的。

  要让 SQL Server 访问远程磁盘文件,SQL Server 服务帐户必须有权访问网络共享。这包括备份操作向网络共享中写入所需的权限以及还原操作从网络共享中读取所需的权限(例如,使用域用户帐户)。

  在 SQL Server 的以后版本中将不再支持磁带备份设备。磁带备份设备的用法类似于磁盘设备,但下述情况例外:

(1)磁带设备必须物理连接到运行 SQL Server 实例的计算机上。不支持备份到远程磁带设备上。

(2)如果磁带备份设备在备份操作过程中已满,但还必须写入一些数据,则 SQL Server 将提示更换新磁带并在加载新磁带后继续备份操作。


二、介质集(媒体集)

1、介质类型

  包含一个或多个备份介质的集合的备份构成一个介质集。“介质集”是“备份介质”(磁带或磁盘文件)的有序集合,使用固定类型和数量的备份设备向其写入一个或多个备份操作。

2、添加备份介质

  可以直接添加磁盘、磁带,也可以先将备份介质设置为“备份设备”然后再添加进来。

233630525.png

  注意:必须指定介质集使用磁带机或磁盘驱动器,但不能同时使用两者。备份设备的类型和数量是在创建介质集时建立的,不能更改。但是,如有必要,可以在备份和还原操作之间将给定设备替换为同一类型的设备。


3、介质簇(媒体簇)

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

  注意:在镜像介质中,所有介质簇也是镜像的。例如,如果使用六个备份设备来设置介质集的格式,其中使用了两个镜像,则有三个介质簇,每个介质簇包含两个相同的备份数据副本。

  介质簇中的每个磁带或磁盘都分配了“介质序列号”。磁盘的介质序列号通常为 1。在磁带介质簇中,起始磁带的序列号为 1,第二盘磁带的序列号为 2,依此类推。


4、初始化介质集

  介质集是在备份操作过程中通过格式化备份介质(一个或多个磁带或磁盘文件)从而在备份介质上创建的。格式化进程会对备份媒体进行以下更改:

(1)删除旧标头(如果存在),从而有效地删除备份媒体中以前的内容。格式化磁带设备会删除当前装入的磁带中以前所有内容。格式化磁盘只影响您为备份操作指定的文件。

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

  设置格式后,每个文件或磁带都包含介质集的介质标头,可以开始接收备份内容。有了标头后,备份操作会将指定数据备份到为该操作指定的所有备份设备中的备份介质。

232944268.png

  介质标头是在第一次使用磁带(或磁盘)执行备份操作时创建的,标头在重新格式化介质之前保持不变。介质标头的主要信息有:介质的名称(可选)、介质集的唯一ID、介质集中的介质簇数、包含此介质的介质簇的序列号、介质簇的ID、介质簇中此介质的序列号(对于磁盘文件,此值始终为1;对于磁带,起始磁带为1,第二盘磁带为2,依此类推)、创建标签的日期和时间、介质集中的镜像数(1至4,1表示设备未镜像)。


5、示例

  下例将备份到一个介质集,备份前对新介质集执行格式化操作。该介质集包含2个磁盘文件和一个备份设备(同为磁盘文件)。

BACKUP DATABASE [AdventureWorks2008R2] 
TO  DISK = N'C:\Backup\BakFile1.bak',  
DISK = N'C:\Backup\BakFile2.bak',  
[BackupDevice1] 
WITH FORMAT, INIT,  
NAME = N'AdventureWorks2008R2-完整 数据库 备份', 
SKIP, NOREWIND, NOUNLOAD,  STATS = 10


三、备份集

1、新建备份集

  成功的备份操作将向介质集中添加一个“备份集”。在每个介质上,备份集都包含说明备份集的标头。

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

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

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

231346343.png


2、追加备份集

  为了尽可能利用可用空间,通常将新的备份集追加到现有媒体集。追加到备份时会保留所有以前的备份。

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

234710301.png

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

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

  注意: “追加”是 BACKUP 的默认行为,可以通过使用 NOINIT 选项显式指定追加。但为清楚起见,要包括此选项。

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

231454420.png


3、覆盖备份集

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

  也可以通过以下选项显示地说明:

(1)“追加到现有备份集”即:WITH NOFORMAT, NOINIT

(2)“覆盖所有现有备份集”即:WITH NOFORMAT, INIT

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

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

  注意:下一版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

  “检查介质集名称和备份过期时间”可以显式申明在满足下列任一条件时不覆盖备份媒体:

(1)媒体上的现有备份尚未过期(如果指定 SKIP,则不检查过期。)过期日期将指定备份过期的日期,并可以由另一个备份覆盖。创建备份时可以指定过期日期。默认情况下,过期日期由 sp_configure 设置的 media retention 选项确定。有关详细信息,请参阅 sp_configure (Transact-SQL)。

(2)媒体名称(如果有)与备份媒体上的名称不匹配。媒体名称是一个描述性名称,用于方便地识别媒体。

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

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


四、条带化与镜像

1、条带备份

  例如, BACKUP DATABASE 语句的 TO 子句列出三个设备,则 BACKUP 将数据分布在三个介质中。

TO  DISK = N'C:\Backup\BakFile1.bak',  
DISK = N'C:\Backup\BakFile2.bak',  
[BackupDevice1]

  通过一个称为“并行条带备份”的进程,SQL Server 能同时执行备份到多个备份设备,因此可以显著提高备份操作的速度。这个速度的关键是有可用于备份的同一类型独立的物理设备,例如3个不同的磁带设备,或3个不同的磁盘驱动器。

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

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

(2)还原时的注意事项。对于任何从磁盘备份进行的还原以及任何联机还原,必须同时装入此介质集的全部介质。

(3)压缩和未压缩的备份不能在一个介质集中共存。当同时使用压缩和未压缩的备份介质时,必须在备份选项中显式申明格式化介质集。


2、删除条带化

  条带化的介质集如果不再用于原介质集,可以被重新用于组成其他介质集。在被新介质集使用时,必须格式化这些介质(一个或多个磁带或磁盘文件),格式化进程会删除备份介质中以前的内容并向每个备份设备中的备份介质写入新的媒体标头。


3、镜像备份

  镜像介质集通过降低备份设备故障的影响来提高备份的可靠性。由于备份是防止数据丢失的最后“防线”,因此备份设备出现故障的后果是非常严重的。随着数据库大小的增加,备份设备或介质发生故障致使备份不可还原的可能性也相应增加。镜像备份介质通过提供冗余来提高备份的可靠性。

  一个镜像介质集包含2个到4个镜像。每个镜像包含介质集中的所有介质簇。镜像必须有相同的设备数,每个介质簇一个设备。每个镜像要求每个介质簇都有一个单独的备份设备。例如,包含四个介质簇、三个镜像的镜像介质集需要十二个备份设备。所有这些设备必须是相同的。例如,使用同一制造商提供的同一型号的磁带机。

  下图显示了包含两个介质簇、两个镜像的镜像介质集示例。每个介质簇都包含三个介质卷,这些介质卷在每个镜像中都备份一次。

000331692.png

  镜像中的对应卷都具有相同的内容。这样,还原时它们可以互换。例如,在上图中,tape2 的第三卷可以与 tape0 的第三卷互换。上图的示例代码如下:

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

  注意:不能通过删除某个镜像来隐性分割(拆分)镜像介质集。如果某个镜像中磁带或磁盘已损坏或已经过重新格式化,则该镜像不能再用于其他备份。至少有一个完整镜像保持完好无损时,才可以读取介质集。如果每个镜像都丢失了指定的介质簇,则介质集将不再可用。


五、密码保护

1、介质集密码

  它对介质集集中保存的数据提供较弱的保护。当写入媒体标头时,将保存介质集密码。

  不能更改该密码。如果格式化介质集时提供了密码,则在该介质集上创建备份集时必须提供密码。另外,从该介质集执行任何还原操作时也必须提供介质集密码。

注意: 只能对 SQL Server 备份和还原操作使用介质。

  若要指定介质集密码,请在 BACKUP 或 RESTORE 语句中使用 MEDIAPASSWORD 选项。


2、备份集密码

  它对特定的备份集提供较弱的保护。可以对媒体上的每个备份集使用不同的备份集密码。备份集密码是在将备份集写入媒体时创建的。如果为一个备份集指定了密码,必须提供这个密码才能对该备份集执行任何还原操作。

  若要指定备份集密码,请在 BACKUP 或 RESTORE 语句中使用 PASSWORD 选项。