5.3. 备份 CouchDB

CouchDB 在运行时会创建三种不同类型的文件

  • 数据库文件(包括辅助索引)

  • 配置文件 (*.ini)

  • 日志文件(如果配置为将日志记录到磁盘)

以下是确保所有这些文件的备份一致性的策略。

5.3.1. 数据库备份

对于 CouchDB 备份,最简单、最容易的方法是使用 CouchDB 复制 到另一个 CouchDB 安装。您可以根据需要选择 正常(一次性)或持续复制

但是,您也可以随时复制 CouchDB 数据目录(默认情况下为 data/)中的实际 .couch 文件,不会出现问题。CouchDB 对数据库和辅助索引的追加式存储格式确保了这将毫无问题地工作。

为了确保备份的可靠性,建议您在备份主数据库文件(存储在 data/shards 以及父 data/ 目录中的系统级数据库中)之前备份辅助索引(存储在 data/.shards 中)。这是因为 CouchDB 会自动处理略微过时的视图/辅助索引,并在下次读取访问时更新它们,但比其关联数据库更新的视图或辅助索引将触发索引的完全重建。这可能是一项非常昂贵且耗时的操作,并且会影响您在灾难情况下快速恢复的能力。

在受支持的操作系统/存储环境中,您还可以使用 存储快照。当使用诸如 ZFSLVMAmazon EBS 之类的块存储系统时,这些快照具有近乎瞬时的优势。在块存储级别使用快照时,请务必使用操作系统级实用程序(例如 Linux 的 fsfreeze)使文件系统静默,如果需要的话。如果不确定,请咨询您的操作系统或云提供商的文档以了解更多详细信息。

5.3.2. 配置备份

CouchDB 的 配置系统 将数据存储在配置目录(默认情况下为 etc/)下的 .ini 文件中。如果在运行时对配置进行了更改,则配置链中的最后一个文件将使用这些更改进行更新。

简单地备份整个 etc/ 目录以确保从备份恢复后配置一致。

如果在运行时没有通过 HTTP API 对配置进行任何更改,并且所有配置文件都由配置管理系统(例如 AnsibleChef)管理,则无需备份配置目录。

5.3.3. 日志备份

如果 配置为将日志记录到文件,您可能希望备份 CouchDB 写入的日志文件。任何这些文件的备份解决方案都可以使用。

在类 Unix 系统上,如果使用日志轮转软件,则需要使用复制然后截断的方法。这将在创建副本后将原始日志文件的大小截断为零。CouchDB 不会识别任何信号来告诉它关闭其日志文件并创建一个新的日志文件。因此,由于文件句柄功能的差异,除了定期重启 CouchDB 进程之外,在 Microsoft Windows 下没有简单的日志轮转解决方案。