标准数据库备份程序

标准数据库备份程序

我一直在研究我们为托管客户实施的设置,该客户每天备份数据库数次(并且始终提供最近一周的备份)。假设备份需要 20gb,而托管它们的驱动器(实际上是分区)为 30gb。驱动器上有超过 10gb 的其他“东西”,包括 SQL 2000 安装、操作系统和其他各种东西,这意味着需要不断努力才能将驱动器保持在完全满的状态。

我认为没有必要将一周的备份存储在 SCSI 驱动器上,但是我不是这方面的专家,我只是想向其他 DBA 寻求建议,了解如何管理这种备份方案?

值得注意的是,我们目前使用 3 个驱动器、镜像 RAID 设置和一个随时可更换的备用驱动器。因此,灾难恢复是问题的核心,同时最大限度地降低成本。

欢迎任何意见....

提前谢谢大家。

答案1

我之前实施的标准 SQL Server 设置/备份程序(SQL 2000-2008)如下

数据分区将 OS/SQL 二进制文件、数据文件和日志文件拆分到 3 个单独的物理卷上,OS/SQL 放在 RAID 1 上,数据放在 RAID 1 上(此更新是根据 Paul Randall 的评论进行的(http://www.sqlskills.com/), RAID 1 上的日志。还建议使用 1-2 个热备件。我建议尽可能为它们全部使用至少某种级别的 RAID,但如果空间/成本是一个问题,则使用 RAID 1 并将它们全部放在一组驱动器上,您仍将拥有与 RAID 5 相同级别的冗余(最多 1 个驱动器发生故障)(假设分别有 2 个和 3 个驱动器)

数据库设置为每个数据库实现 3 个数据文件,默认的 MDF 和 LDF 用于数据和日志,还有一个 NDF,在数据库属性中将 NDF 设置为默认数据文件,保留 MDF。我已将所有数据库设置为完整恢复模型,因为我进行镜像并且需要能够执行时间点恢复。无论如何我都会建议这样做,但它确实会附带警告(如下)

备份数据库设置中最重要的部分是正确备份(以及相关恢复)。我的标准设置是凌晨 2 点进行完整备份,此时我们只有一小部分人不使用数据库(全球运营,员工分布在从新加坡到纽约的多个时区),然后从早上 8 点开始每 5 小时进行一次事务日志备份(0800、1300、1600、2100)。免责声明如果你将数据库设置为完全恢复模式,那么请确保你正在执行事务日志备份否则,您最终会得到巨大的日志文件,然后可能不得不截断然后缩小它们,根据 Paul Randall(嗨,Paul!)的说法,这是非常糟糕的事情(tm),我相信他与 SQL 有某种关系。每日备份(包括与它们相关的事务日志)保存在机器本地,然后由我们的备份服务在夜间收集并由值班管理员带到异地。这样,如果机器丢失,我们只会丢失上次完整备份的数据,如果有人搞砸了数据,我们只会丢失上次 T-Log 备份和该时间点之间输入的信息(我们可以进入当前日志并回放任何其他事务,但我们通常不会这样做,因为我们的 SLA 就是为适应这一点而构建的)您当然可以在创建时将事务日志备份发送到机器外甚至异地,但这是您自己决定的。

数据文件压缩不要这样做(除非你陷入无法避免的情况)绝对不要安排它!

索引和碎片化这应该是手动(但脚本化)操作,仅在需要时执行,您应该进行定期维护,索引碎片应该在此列表中。在我的月度计划中,我会检查数据文件的大小、索引碎片和数据库的数量(有时开发人员会添加数据库而不告诉我们,维护计划会处理备份,但有时他们会搞砸数据文件布局和命名约定),如果我们检测到任何新数据库,则会根据其大小、数据文件布局和备份对其进行审核(检查并仔细检查备份永远不会有坏处)

请大家随意批评上述内容,或者至少告诉我我在胡说八道。

答案2

不要从“备份”的角度来考虑,而要从“恢复”的角度来考虑。坐下来,明确你需要什么才能恢复,测试一些恢复,以确保你的列表正确且完整,然后才开始考虑你的备份策略。

一般来说,对于服务器应用程序,备份操作系统、程序文件、配置和所有其他东西我认为是必不可少的。恢复原始数据很容易,但恢复配置却不容易。此外,您还需要恢复当前补丁级别、操作系统和应用程序配置、您可能为服务创建的任何本地用户帐户等等。

因此,我的口头禅是“备份所有内容,这样你就可以确定你没有遗漏任何内容”。

现在,您每天将多个备份保存在与操作系统相同的存储中,持续一周。如果您不小心丢失了一些数据,这没什么大不了的;如果您丢失了操作系统或出现硬件故障,您就没事了,不会有错的。

我以前使用过的一种方法是白天定期将数据(仅)转储到磁盘,晚上将所有内容完整备份到磁带。这样可以减少白天转储的存储要求,从而为意外丢失的数据提供更长的恢复时间(通过保留超过一周的数据)。将完整数据保存到磁带意味着我可以对所有内容进行完整恢复,如果需要,甚至可以恢复到备用服务器。我可以做得更进一步,但现在我的业务需求不需要我这样做 - 您的业务需求可能需要我这样做。

答案3

正如所描述的,您当前的备份计划实际上并未涵盖许多需要灾难恢复的场景。

您至少应该在那台机器之外进行备份,以防发生诸如电源故障之类的严重事件导致所有驱动器同时损坏,最好在另一个站点进行备份,以防服务器所在的建筑物发生意外。

为了方便访问,在服务器本身上保留备份的本地副本(例如,如您建议的那样,保留在新的更大的驱动器上)并没有错,但这些不应该是您唯一的备份。

从您当前空间受限的情况来看,我建议仅将最新的几个备份保存在机器本地,并将其余的备份保存在另一台机器的较大驱动器上,最好尽可能在异地(像 rsync 这样的协议可以大大减少异地备份所需的带宽)。如果机器在您可以物理访问的地方,那么您可以(或者也可以)通过将离线备份复制到外部驱动器并在其他时间将其远离机器来保留离线备份(或者更好的是,有两个或更多外部驱动器并循环使用它们 - 如今,USB 笼中的大型驱动器非常便宜)。如果您有物理访问权限,则循环使用多盘磁带的磁带驱动器可能是更好的选择。

答案4

所以,虽然你有三个驱动器,但实际上只使用了 1 个驱动器的空间,对吗?两个驱动器为镜像 + 第三个为备用...

您可以通过迁移到 RAID 5 来获得一些空间

话虽如此,您可以像问题中所建议的那样添加另一个大型驱动器来保存备份。

相关内容