我正在定期使用 备份我的整个服务器(包括虚拟机)rsync
。现在我的硬盘出了点问题,一些文件无法读取,包括 CouchDB 的文件(消息被混淆了):
cp: error reading '/var/lib/lxc/my-couch2/rootfs/home/foo/couchdb/couchdb/data/.shards/40000000-5fffffff/bar2.1533443496_design/mrview/54f171fe1f24ac4eb52ac24c85f9d8fc.view': Input/output error
根据文档:
为了确保备份的可靠性,建议您在备份主数据库文件(存储在 data/shards 下以及父 data/ 目录中的系统级数据库)之前备份二级索引(存储在 data/.shards 下)。这是因为 CouchDB 会在下次读取访问时自动更新略微过时的视图/二级索引,但比其关联数据库更新的视图或二级索引将触发索引的完全重建。这可能是一项非常昂贵且耗时的操作,并且会影响您在灾难情况下快速恢复的能力。
因此,据我所知,这是一个临时文件。有没有办法使用 CouchDB 本身重建此文件,以便我们既可以修复服务器上的文件,又可以正常进行备份?
答案1
我问了同样的问题apache/couchdb/问题。关于回复,我备份了错误文件并触发了数据库中的所有视图bar2
。该文件已恢复,一切似乎都正常工作。