我正在尝试同步本地CouchDB安装中的数据库(Mac上的1.3.1版)和Cloudant上具有主控复制的数据库。
在我的本地Futon http://localhost:5984/_utils
中,我配置了Replicator来将我的本地数据库复制到Cloudant。从本地数据库复制到Cloudant数据库,一切都很好,但不能向后复制。如果Cloudant数据库中的数据发生更改,这些更改不会复制到我的本地数据库中。
本地->Cloudant=工作
Cloudant->Local=不工作
这有可能吗?有人能帮忙吗?
谢谢!
最后我发现我只需要从本地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
中有两个复制正在运行。
请注意,我也将用户名和密码添加到了本地连接中。这是因为您需要成为授权用户才能复制设计文档。
非常感谢迈克,你的回答帮了我很大的忙!
您可以尝试为源和目标指定完整的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
如果这对你不起作用,你能复制/粘贴吗:
- 复制器数据库中文档的正文
- grep任何带有复制的内容的日志文件
此外,这里还有一个经典的"gotcha",我认为您需要对源数据库和目标数据库都具有"编写器"权限。这可能看起来很奇怪,但这是因为复制器在源和目标上都保存检查点文档,这样下次你要求复制时就不必从头开始了。