数据库间备份验证

Interbase Backup Validation

我们有一个自定义备份解决方案,利用 Delphi 中的 ibx 控件来执行夜间自动备份。作为我们当前对成功备份的验证的一部分,我们读取了备份生成的输出日志,以查找日志文件中最后的“关闭文件、提交和完成”措辞。此外,我们还对一个单独的区域进行了完全还原,以确保 ibk 文件有效。事实证明,这在可用驱动器方面存在问题 space,因此寻找其他想法以确保备份成功。

我们还能如何确保我们的 ibk 文件有效?

杰夫, 不确定您的数据库大小或备份文件大小,以及它们是否对于剩余磁盘来说太大 space。您可以分享数据库和备份大小的详细信息吗?

较旧的 InterBase(2017 年及更早版本)有一种方法可以让命令行工具 gbak 将备份的输出通过管道传输到另一个从备份恢复的 gbak 进程。这将允许您将磁盘 space 保存在备份文件上。但是,因为您使用的是 IBX backup/restore 服务,所以这是不可能的。此外,InterBase 2020 具有不同的备份格式,需要对备份文件进行随机(非顺序)写入访问,因此即使通过 'gbak' 命令行工具也不允许任何管道输出。

这里有几种“减少”磁盘存储要求的方法可能适合您。

** 备份文件 **

  1. 您可以让 InterBase 备份服务(从您的应用程序)将目标备份文件存储在外部存储介质(HDD、USB 记忆棒等,或 SAN disk/network 文件共享)中。 backup/restore 服务可以 read/write 从网络 shares/external 媒体备份文件。

** 恢复的数据库 **

  1. 恢复数据库时可以使用服务参数选项UseAllSpace (http://docwiki.embarcadero.com/Libraries/Sydney/en/IBX.IBServices.TRestoreOptions),相当于gbak选项“-use_all_space”。这将为您节省大约 20% space 的恢复数据页。
  2. 关闭索引创建,从而减少页面消耗(可能相当多,具体取决于您的索引定义)。但是,您将因此失去索引验证。上面同一页中的“DeactivateIndexes”选项(gbak 选项“-inactive”)。
  3. 将数据库恢复到带有自己存储介质的远程 InterBase 服务器,或者连接到 USB 记忆棒或 SAN 磁盘。由于您仅将还原的数据库用于验证备份文件,因此您可以通过网络将此还原的数据库放在较慢的 I/O 介质或较慢的服务器上。