复制不适用于包含音频/视频文件的 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_dirlocal.ini 文件中指向的任何地方。

这最适合创建一个节点的备份来恢复一个节点。所以每个节点都应该有自己的备份。

【讨论】:

以上是关于复制不适用于包含音频/视频文件的 CouchDB 数据库的主要内容,如果未能解决你的问题,请参考以下文章

AVAssetWritter 不适用于音频

音频播放和录制不适用于 iOS 10

Couchdb 视图不适用于多个过滤器

AC3 音频不适用于带有 Perian 的 Mountain Lion

Couchdb视图不适用于多个过滤器

JavaScript 音频持续时间不适用于 ALAC 文件(HTML 音频持续时间属性)