1

我有以下情况:

我们的系统在本地运行 SQL Server Express 2005 数据库(在每个用户桌面上,如果您愿意的话)。该系统正在存储来自机器的大量生产数据。对数据的安全性要求很高,每晚甚至每小时做一次备份是不够的。我们需要一种备份策略,以确保数据库几乎即时/连续备份。

有没有人成功地实施了类似的系统,和/或对如何完成它有一些想法?我现在唯一能想到的就是用镜像驱动器(raid)来保存数据,但这会很复杂而且很昂贵。

我将不胜感激对此的任何想法,因为这对我和我的公司来说是一个真正的问题。提前致谢!

更新:

我对场景的描述不够清楚。该系统将数据存储在与任何东西都没有连接的车辆中。因此,中央数据库是不可能的。我们也不能使用标准/企业版的 SQL Server,因为它会很昂贵(每辆车都需要许可证)。感谢您的输入!

4

7 回答 7

4

将您的数据库切换到“完整”恢复模式。每晚进行完整备份,并在主要用户操作后进行增量备份。增量备份可以在闪存或不同的硬盘上进行,所有数据都可以在在线时与服务器同步。

另一种简单的方法是跟踪存储在单独驱动器上的文本文件中的所有用户更改和重要数据。如果 SQL 数据库崩溃,用户或其他操作员可以重复步骤来恢复数据。

于 2009-02-19T15:45:45.530 回答
1

我看到的一种方法是使用DoubleTake

于 2009-02-19T13:45:34.167 回答
1

我将假设服务器上的中央数据库是不可行的,因为您的系统是独立运行的并且没有连接到任何东西。所以这就是我要做的

在计算机上设置 RAID。这可以确保您避免简单的磁盘故障。

如果您有完整的数据库备份和一组可用的事务日志,则任何 SQLSever 数据库都可以恢复到最后提交事务的位置。基本上,您只需恢复最后一次完整备份,然后应用事务日志。请参阅这些链接。

http://www.enterpriseitplanet.com/storage/features/article.php/11318_3776361_3 https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p= 132

因此,您需要做的是设置数据库和事务日志的定期完整备份,以及更定期的事务日志备份(并确保您的事务日志永远不会耗尽空间)。

如果发生故障,您可以恢复上次的完整备份,然后继续应用事务日志。

我自己,如果这些是关键系统,我会倾向于向系统添加一个额外的驱动器,并确保将备份复制到该系统。这是因为与 raid 一样好,它有时也会出现问题 - raid 控制器失败,磁盘被意外并行擦除,磁盘故障被忽视,因此您只在一个磁盘上运行等。如果您确保将备份复制到单独的磁盘,那么您始终可以恢复到上次的事务日志备份。当然,您还应该确保磁带备份,但它们通常是出现问题时的最后手段。

如果由于某种原因您无法设置 raid,那么您仍然应该安装第二个磁盘,但将数据库文件放在一个驱动器上,将事务日志放在另一个驱动器上,并将备份复制到两个磁盘。如果 C 驱动器发生故障,或者其他一些软件问题导致数据库崩溃,您仍然可以恢复到最后提交的事务。D 驱动器上的故障将您限制为最后一次事务日志备份(Oracle 曾经允许您从数据库中镜像事务日志,这又会完全覆盖您,但我认为 SQL Server 中不存在此功能)

如果您正在寻找 SQL Server Express 的调度程序(没有附带),那么我一直在非常愉快地使用SQLScheduler,没有任何问题,而且它是免费的。

于 2009-02-19T15:27:38.467 回答
0

Raid 并不昂贵,但也不是最佳选择。如果您真的想要高可用性数据,您应该在远程服务器上升级到 sql server 标准,每个用户都连接到该服务器并使用基于事务的复制到另一台机器上的 sql server (express) 实例。Raid 并不总能保护您免受数据丢失。如果数据对您来说那么重要,那么成本应该不是那么大的问题。

更新以响应问题更新。

如果您不能使用远程服务器,那么有几个选项:

  • 您编写一个触发器,该触发器在每次插入或更新时启动一个备份脚本,并将其存储在单独的硬盘上。
  • 你使用突袭。但请注意,如果 raid 控制器出现故障,您仍然会遇到问题。
于 2009-02-19T13:49:26.980 回答
0

最明显的答案是放弃在本地运行的 SQL Server Express,并为您的数据使用单一来源(例如安装在中央存储位置的标准 SQL Server)。除非您的系统需要对每个人自己的 SQL Server Express 实例进行单独备份。

如果您的要求非常严格,以至于每次操作都需要即时备份,那么您绝对应该考虑一种不同于 SQL Server Express 本地实例的存储方法。

于 2009-02-19T13:50:21.737 回答
0

仅使用一个集中式 SQL Server 并每隔一小时左右备份一次不是更容易吗?如果您真的需要即时备份,您的公司(似乎不想花钱在每台机器上安装 Express)需要准备两台服务器和两个 SQL Server Enterprise 许可证来实施镜像。

于 2009-02-19T13:52:02.183 回答
0

RAID 并不昂贵。使用 RAID 来防止硬盘出现故障。不过,您还需要监控。如果您让两个驱动器都发生故障,那么这样做毫无意义。

此外,实施每小时增量备份,然后是每日增量备份,最后是每周完整备份。

您需要所有这些策略一起工作,因为它们可以防止不同的事情。RAID 不能防止破坏数据的人为或编码错误。每小时和每周备份不能防止硬盘故障。

于 2009-02-19T16:13:27.933 回答