5.3. 备份CouchDB

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

  • 数据库文件(包括辅助索引)
  • 配置文件 (*.ini
  • 日志文件(如果配置为记录到磁盘)

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

5.3.1. 数据库备份

CouchDB备份最简单、最简单的方法是使用 CouchDB replication 到另一个CouchDB安装。你可以选择 normal (one-shot) or continuous replications 取决于你的需要。

但是,您也可以复制 .couch 来自CouchDB data目录的文件(默认情况下, data/ )任何时候,没有问题。CouchDB为数据库和二级索引提供的仅附加存储格式确保了这一点能够正常工作。

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

在支持的操作系统/存储环境中,还可以利用 storage snapshots . 当使用块存储系统(如 ZFSLVMAmazon EBS . 在块存储级别使用快照时,请确保使用操作系统级实用程序(如Linux)停止文件系统 fsfreeze 如有必要。如果不确定,请参考操作系统或云提供商的文档以获取更多详细信息。

5.3.2. 配置备份

CouchDB的 configuration system 将数据存储在 .ini 配置目录下的文件(默认情况下, etc/ ). 如果在运行时对配置进行了更改,配置链中的最后一个文件将随更改而更新。

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

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

5.3.3. 日志备份

如果 configured to log to a file ,您可能需要备份CouchDB编写的日志文件。这些文件的任何备份解决方案都有效。

在类UNIX的系统中,如果使用日志轮换软件,则需要使用复制然后截断的方法。这将在创建副本后将原始日志文件截断为零大小。CouchDB不识别任何被告知关闭其日志文件并创建一个新的日志文件的信号。正因为如此,并且由于文件处理方式的不同,在Microsoft Windows下除了定期重新启动CouchDB进程外,没有直接的日志轮换解决方案。