我可以在多个磁盘上进行完整备份吗?


8

目前,我只有一个备份文件IMTDB.bak,它与数据库本身在同一HDD上。我想通过本质上将其“复制”到另一个磁盘来增加此数据库备份的冗余,但是出现错误“服务器备份失败,该介质被格式化为支持2个介质系列”。我认为这意味着在创建备份时,仅意味着将备份放在一个驱动器上,而我无法追溯地添加更多。我想将备份迁移到该其他驱动器(实际上只是将其复制过来),但是我不想删除当前备份来执行此操作。

我该怎么办?我仅将IMTDB.bak复制到另一个驱动器上的文件夹中是否安全?


当然。使用资源管理器将文件从一个位置复制到另一个位置根本不是问题。您可能需要考虑使用Windows Scheduler来自动化该过程。
Max Vernon 2015年

您在哪里/如何看到此错误:“服务器备份失败,介质被格式化为支持2个介质系列”
Max Vernon

转到“任务”->“备份”并尝试执行“添加”并选择我拥有的磁盘时。
ijustlovemath 2015年

在此处添加另一个磁盘将只会简单地将备份分散到多个磁盘上,从而进一步降低备份文件的可靠性,因为如果两个磁盘中的任何一个发生故障,备份文件将无法使用。按照@Kin的建议执行操作,并使用T-SQL BACKUP DATABASE命令同时备份到两个位置。
Max Vernon 2015年

Answers:


12

由于您不熟悉T-SQL BACKUP DATABASE命令,因此我想添加一些详细信息。

您可能希望通过Windows Task Scheduler服务按照以下语句的方式运行某些程序,因为您无权访问SQL Server代理(我从其他问题中看到,您使用SQL Server Express)。

BACKUP DATABASE [xyz]
TO DISK = 'C:\somepath\mybackupfile.bak'
MIRROR TO DISK = 'D:\somepath\myotherbackupfile.bak'
WITH FORMAT
    , INIT
    , SKIP
    , STATS = 1;

您可能要强烈考虑使该MIRROR TO子句指向本地计算机上不在的某个位置,因为如果您完全丢失了本地计算机,则可能无法访问任何一个备份文件。指定MIRROR TO子句要求您在第一次运行该备份语句时FORMATWITH子句中指定关键字。

您可以使用Windows共享的名称,例如,\\SomeServer\SQLBackups\MyBackupFile.bak只要共享的安全权限允许Windows Scheduler服务访问即可。

WITH FORMAT, INIT部分告诉SQL Server覆盖备份文件中可能存在的所有现有备份。WITH NOINIT如果要将多个备份(即来自不同时间点的备份)保存在这些文件中,则可以将其更改为完成第一个镜像备份之后。 NOSKIP告诉SQL Server不要检查备份过期等。 STATS = 1将以1百分比为单位显示输出。您可以将此号码更改为您喜欢的任何号码。我使用1非常大的数据库,因为它可以显示进度。

要通过Windows Task Scheduler服务运行此命令,您需要将该命令(一旦在SQL Server Management Studio中测试过)保存到磁盘上的文件中;我们称之为C:\somefolder\BackupMyDB.sql。然后,您要向Windows Scheduler添加以下命令:

<path to sqlcmd>sqlcmd -S localhost -E -i C:\somefolder\BackupMyDB.sql

您将需要让该任务“以”身份运行。

完成所有这些操作后,您将非常认真地考虑尝试将备份还原到另一台计算机上,以便您了解如何执行此操作。拥有备份只是灾难恢复计划的一部分。可能更重要的部分是测试该计划。

还原过程将使用类似以下的命令:

RESTORE DATABASE [xyz]
FROM DISK = 'D:\somepath\myotherbackupfile.bak'
WITH RECOVERY
    , STATS = 1;

警告,RESTORE DATABASE在当前数据库所在的计算机上运行可能会覆盖当前数据库而没有确认或警告,因此请确保您仔细评估了数据库名称([xyz]在我的示例中)以及使用的其他选项。(除非您将REPLACE关键字添加到WITH子句中,否则这实际上不会覆盖现有数据库-我只想强调注意。)


谢谢!由于我的.bak文件已包含一些备份,因此创建的镜像会自动包含那些备份吗?还是只是最近的一个?
ijustlovemath

我建议您将该文件移到某个位置,因为它MIRROR要求您在首次使用该文件时格式化备份文件,这会删除该文件中的所有备份。
Max Vernon

1
再次感谢您提供的详细信息。无需任何其他资源,对新手真的很有帮助!
ijustlovemath

我的荣幸。我不能过分强调经过测试且可靠的备份和还原策略的重要性。我建议对还原到其他计算机进行测试,这样您就不可能破坏现有数据库,这在您学习时很容易做到。
Max Vernon 2015年

5

您可以用来backup database .... MIRROR TO DISK =将数据库备份到其他位置。

我仅将IMTDB.bak复制到另一个驱动器上的文件夹中是否安全?

是的,备份完成后即可执行此操作。

注意:确保您使用的是T-SQL,而不是GUI,GUI公开了有限的备份选项。


这里推荐的选项是什么?我的数据库非常简单,只有四个表,其中三个表只有90,000行,第四个表有〜75M。这也是固定大小;不会再添加任何数据。我将只针对它运行查询。
ijustlovemath

5
我建议您将数据库设置为read_only模式,然后使用进行最后一次备份COMPRESSION。存放在安全的地方。
Kin Shah
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.