目前,我们使用软件备份我们的 MSSQL 2000 和 2005 数据库,以便每晚将文件复制到磁带。数据库大小为 14-16Gb 和 500Mb。
由于 SQL Server 可以将数据库备份到文件,我们是否会更好地安排 SQL Server 创建备份文件,然后将这些文件备份到磁带?此外,如果我们使用这种方法,是否有可能以某种方式创建自上次备份以来已完成的事务日志,以便我们可以重新创建数据库并应用其他事务?
目前,我们使用软件备份我们的 MSSQL 2000 和 2005 数据库,以便每晚将文件复制到磁带。数据库大小为 14-16Gb 和 500Mb。
由于 SQL Server 可以将数据库备份到文件,我们是否会更好地安排 SQL Server 创建备份文件,然后将这些文件备份到磁带?此外,如果我们使用这种方法,是否有可能以某种方式创建自上次备份以来已完成的事务日志,以便我们可以重新创建数据库并应用其他事务?
注意:我对 SQL Server(所有版本)最大的错误是事务日志备份。
我们每 30 分钟运行一次 SQL 数据库的夜间和事务日志的完整备份,备份到磁盘(在另一台服务器上,不同的 SAN 上)到带有日期标记的文件(相当简单的 SQL 脚本和 SSIS)。
我们的脚本还创建了“restore.sql”脚本来恢复上一次完整备份和截至该日期的所有事务日志。
然后我们压缩超过 2 天的文件,删除任何超过 30 天的文件(但将月末备份保存在存档中)。我们在异地复制这个驱动器(我们很幸运,大型站点之间有 200 英里,并且它们之间有大型 WAN 连接。)
然后我们将其备份到磁带上。(皮带、牙套和更多牙套!主要是出于政治原因)
我们运行了大量的 SQL Server 数据库,而商业工具要么太贵,要么就是不给我们带来实惠。但我会推荐 RedGate SQLBackup 用于较小的安装
确实没有理由不使用 SQL Server 的本机备份功能。它很棒,可以理解事务日志,并为您提供所需的大部分功能。(第三方 SQL Server 备份解决方案非常棒,因为它们与 Microsoft 公开的 API 配合使用,并且通常提供加密和压缩支持 - 压缩不仅可以节省磁盘空间,而且通常可以减少备份和恢复时间。)
所以是的...我建议使用 SQL Server 进行备份。
并确保定期备份事务日志。(我建议每 15 分钟或更短时间进行一次 - 定期日志文件备份有助于保持日志文件精简/平均1,并且由于某种原因,最终用户在服务器崩溃时总是脾气暴躁,他们必须重做所有工作自上次日志文件或完整/差异备份以来的最后 x 小时。)然后,出于冗余目的,使用 robocopy、syncback、文件系统复制或其他东西将这些备份的副本移动到另一个位置,以防止硬件/磁盘崩溃或火灾数据中心等。
随意查看这两个免费视频以获取更多信息和想法:
http://www.sqlservervideos.com/video/backup-options
http://www.sqlservervideos.com/video/sqlbackup-best-practices/
[ 1 ] [SQL Server 杂志:最大化存储性能] 3
您的意思是您当前将数据库 MDF 和 LDF 文件备份到磁带?我认为这可以,只要数据库在您执行此操作时处于脱机状态(即数据库分离或 SQL 服务关闭),但如果您在使用数据库时尝试这样做,您可能最终会得到备份不起作用,因为文件在复制时会发生变化。
根据我的经验,创建完整的 SQL 备份并将其放到磁带上更为常见。
此外,为了回答您的第二个问题,SQL Server 确实支持事务日志备份。有关完整恢复模型的 MSDN 文档将是开始阅读的好地方。
正如您从答案中看到的那样,大多数人先备份到磁盘,然后再备份到磁带。我经常看到(并推荐)的是立即备份到服务器本身的磁盘(这可能是 SAN 附加存储,关键是备份不是通过网络写入的)。完成此即时备份后,会将其复制到中央备份服务器。您保留需要在本地恢复的内容的即时副本。在该备份服务器上,您保留了几天的备份。这样,如果您确实必须回滚到前一两天,您就不需要磁带。当然,您还可以将中央备份服务器备份到磁带上。所以这涵盖了你的恢复能力。
关于您应该执行的备份类型,如果您想恢复所有事务并能够执行我们所说的时间点恢复,您需要确保数据库将其恢复模式设置为完全恢复,并且您将要进行完整备份以及事务日志备份。您可能希望散布差异备份以减少要还原的文件数量。所有这些都包含在在线书籍中,它会比我们任何人在论坛帖子中提供更好的描述。
就 LiteSpeed 和 Red Gate 的 SQL Backup 等 3rd 方产品而言,它们曾经比原生备份更快。那是因为他们使用了 SQL Server 没有的 API。在 SQL Server 2000 中确实如此,但我不确定是否仍然如此。但是,它们会进行加密和压缩,因此考虑到数据库的大小,可能非常值得考虑。
脚本备份到磁盘很容易并且操作非常快速:
osql -S [ip_of_server] -Q "备份数据库[database_name]到磁盘 = 'C:\Backups\Backup.bak'"
使用 UNC 路径通过网络备份到不同位置(无论如何这不是一个好主意)不起作用。无论如何,在本地进行备份并将它们加密存储更容易。
硬盘便宜,而且越来越可靠。我们不久前就扔掉了磁带,再也没有回头。
我更喜欢这些说明: http ://www.sqldbtips.com/showarticle.asp?ID=27