6

我正在尝试同步本地 CouchDB 安装中的数据库(Mac 上的 v 1.3.1)和具有主-主复制的 Cloudant 上的数据库。

在我的本地蒲团http://localhost:5984/_utils中,我已将 Replicator 配置为将我的本地数据库复制到 Cloudant。从本地数据库复制到 Cloudant 数据库时一切正常,但不能向后复制。如果 Cloudant 数据库中的数据发生更改,这些更改不会复制到我的本地数据库中。

本地 -> Cloudant = 有效

Cloudant -> 本地 = 不起作用

这有可能做到吗?任何人都可以帮忙吗?

谢谢!

4

2 回答 2

5

最后我发现我只需要从本地 CouchDB 配置两个复制。

以下是两个副本:

{
    "source":"https://username:pwd@username.cloudant.com/cloud_db",
    "target":"http://username:pwd@localhost:5985/local_db"
}

{
    "source":"http://username:pwd@localhost:5985/local_db",
    "target":"https://username:pwd@username.cloudant.com/cloud_db"
}

现在,http://localhost:5984/_utils/status.html有两个复制正在运行。

请注意,我也将用户名和密码添加到本地连接。这是因为您需要成为授权用户才能复制设计文档。

非常感谢迈克,您的回答很有帮助!

于 2013-07-19T23:28:01.430 回答
4

您可以尝试为源和目标指定完整的 URL 吗?我认为它看起来像:

#create the replicator database for your local server
curl -X PUT 'http://127.0.0.1:5984/_replicator'

然后上传这个文件:

{  
   "source":"https://username:pwd@username.cloudant.com/source_db",
   "target":"http://127.0.0.1:5985/target_db"
}

然后您应该能够通过以下方式对其进行监控:

http://127.0.0.1:5984/_active_tasks

如果这对您不起作用,请复制/粘贴:

  • _replicator 数据库中的文档正文
  • 使用 _replication grep 日志文件

此外,这里有一个经典的“陷阱”,我认为您需要对源数据库和目标数据库都有“作者”权限。这可能看起来很奇怪,但这是因为复制器在源和目标上都保存了检查点文档,因此下次您要求复制时,它不必从头开始。

于 2013-07-19T15:32:36.527 回答