如果已使用第 10 章,配置自动备份 (csstored)中所述的自动备份功能,则可以在动态数据库损坏时使用热备份副本。
本节介绍了如何恢复两个不同的自动备份:
在恢复备份之前,请确保您已经执行了以下操作:
尝试诊断动态数据库的损坏是由哪个事务引起的。
删除或更正了引起损坏的事务,这样新的归档将不会被损坏。
通过将损坏的数据库复制到另一个目录或可移动介质中来保留它。如果要与技术支持联系,这样做是必要的。
当动态数据库损坏时,热备份应当是首选的备份。要恢复热备份,请执行以下步骤:
标识损坏的动态数据库目录中的任何未应用或为写入而打开的日志文件。
关闭为写入打开的日志。它包含最新事务。
创建新的(恢复)目录。
将当前热备份副本复制到新的恢复数据库目录中。
将 log.* 文件从损坏的动态数据库目录中复制到新的恢复数据库目录中。
如果您要保留数据库的归档副本,请将尚未应用到动态数据库的日志复制到归档目录中,这样归档备份副本就完整了。
针对新的恢复数据库运行 db_recover,同时指定 -c -h 选项。
例如,如果新的恢复目录名为 recoverydb,则命令将如下所示:
db_recover -c -h recoverydb
将 log.* 文件保留在新的恢复目录中。
db_recover 程序将日志文件应用到新的恢复数据库,但是从 4.2 版开始,Berkeley DB 要求保留这些日志文件。
针对新的恢复目录中的数据库文件运行 db_verify。
有关说明,请参见检查日历数据库的损坏。
针对新的恢复目录运行 csdb -v list。
如果新的恢复目录通过了上述全部三个恢复步骤,则损坏的旧动态数据库将替换为新的恢复数据库。
将新的动态数据库复制到热备份目录中以用作新快照。
所有新的日志都将应用到此副本中,直到拍下了下一个定期快照。
启动 Calendar Server。
如果新的恢复目录在任何一个步骤失败,则按如下所述确定未损坏的早期热备份:
如果您没有未损坏的热备份,但有归档备份及其事务日志,则可以通过执行以下步骤来恢复最近未损坏版本的已归档数据库:
标识损坏的动态数据库目录中的任何未应用或为写入而打开的日志文件。
关闭为写入打开的日志。它包含最新事务。
创建新的(恢复)目录。
将最新的归档副本及其日志文件复制到新的恢复数据库目录中。
将任何未应用的 log.* 文件从已损坏的动态数据库目录中复制到新的恢复数据库目录中。
针对新的恢复数据库运行 db_recover,同时指定 -c -h 选项。
例如,如果新的恢复目录名为 recoverydb,则命令将如下所示:
db_recover -c -h recoverydb
将 log.* 文件保留在新的恢复目录中。
db_recover 程序将日志文件应用到新的恢复数据库中,但是从 4.2 版开始,Berkeley DB 要求保留这些日志文件。
针对新的恢复目录中的数据库文件运行 db_verify。
有关说明,请参见检查日历数据库的损坏。
针对新的恢复目录运行 csdb -v list。
如果新的恢复目录通过了上述全部三个恢复步骤,则损坏的旧动态数据库将替换为新的恢复数据库。
将新的动态数据库复制到热备份目录中以用作新快照。
启动 Calendar Server。
如果新的恢复目录在任何一个步骤失败,则标识未损坏的早期归档备份,如下所述:
依次从新到旧对每个归档备份副本运行以下三个恢复程序,以找到最近一个未损坏的副本:db_recover -c-h、db_verify 和 csdb -v list。
可以将第一个找到的无损归档副本恢复到动态数据库目录中。
用未损坏的归档备份替换损坏的动态数据库,如恢复归档备份所述。
如果所有的归档备份均已损坏,请致电技术支持。