复制不适用于包含音频/视频文件的 CouchDB 数据库
Posted
技术标签:
【中文标题】复制不适用于包含音频/视频文件的 CouchDB 数据库【英文标题】:Replication not working for CouchDB database containing audio/video files 【发布时间】:2017-06-02 16:34:59 【问题描述】:我们使用 CouchDB 2.0 来存储文件(.txt、.doc、.xls、.pdf、.mp3、.mp4、.zip)。文件从我们的 Web 应用程序上传并存储在 CouchDB 上。上传文件的最大上传大小为 500 MB。
我们希望定期将 CouchDB 从生产服务器备份到安装了 CouchDB 的备份服务器机器。我们正在使用 CouchDB 支持的复制技术来备份数据。
以下 curl 命令适用于复制数据库:
curl -H "Content-Type: application/json" -X POST "http://localhost:5984/_replicate" -d "source":"http://user:password@targetIP:5984/dbname","target":"sampledb","continuous":true
以上命令适用于复制包含所有带有文本文件附件的文档的数据库。但它不适用于以视频或音频或 pdf 文件作为附件的文档的数据库。
以下是有关此问题的详细信息 - 如果在 CouchDB 上上传最大为 500MB 的文本文件,它会以远小于 500MB 的压缩大小存储。如果 CouchDB 只存储文本文件,则复制可以正常工作,没有任何问题。但是,如果在 CouchDB 上上传任何媒体文件、pdf 或 zip 文件,它会被存储但没有任何压缩,并且带有这些文件的 CouchDB 不会成功复制。这通常发生在上传超过 5mb 的媒体文件时。
作为一种解决方法,我们在 default.ini 文件的 compressible_types 选项中添加了 video/*。但仍然无法使用具有媒体附件的文档复制 db。
有人知道在这种情况下如何复制 CouchDB 吗?
任何帮助都是非常可观的。
谢谢你,
贾昆·赫加尔
【问题讨论】:
【参考方案1】:通过在 couchDB 的 local.ini 设置文件中添加以下选项来解决此问题。该文件位于 CouchDB\etc 位置。
[面料] request_timeout = 无穷大
【讨论】:
【参考方案2】:如果您想进行备份,您可以简单地停止一个 CouchDB 节点(假设它是集群的)并创建数据库目录的副本。所以database_dir
在local.ini
文件中指向的任何地方。
这最适合创建一个节点的备份来恢复一个节点。所以每个节点都应该有自己的备份。
【讨论】:
以上是关于复制不适用于包含音频/视频文件的 CouchDB 数据库的主要内容,如果未能解决你的问题,请参考以下文章