对于我的例子,假设我们有两台服务器。服务器A使用服务器A上的本地数据库创建连续拉取复制。此拉取复制的源是服务器B上的数据库。
我知道,如果_replicator数据库是以这种方式创建的,或者通过查询_active_tasks,服务器A可以监视复制的状态。然而,除了监视GET请求之外,服务器B有没有办法知道它是连续拉复制的源?
即便如此,我们使用Cloudant作为服务器B,通过代理进行监控也不是一种选择。因此,如果Cloudant上的数据库是未在Cloudant服务器上创建的复制的一部分,则完全没有办法知道它,因为它不会出现在Cloudant的_active_tasks中,我是否正确?
编辑:在与Cloudant Support的Samantha Scharr沟通后,她说“向我们的客户提供日志是我们正在努力的一个问题”。一旦完成,这不会是一个问题。谢谢你, 保罗
答案 0 :(得分:3)
没有这样的。对于CouchDB,复制过程并不是特别需要跟踪的东西。
说,您有三个实例:A
,B
和C
。 CouchDB允许您在A
上运行复制过程,以将数据从B
复制到C
。例如,A
复制过程将在_active_tasks
中显式定义,因为复制在单独的Erlang进程中运行。但对于B
和C
个实例,这将被视为某些HTTP客户端使用某些有效负载调用其公共API资源。他们永远不会知道有人试图让他们同步。
从理论上讲,您可以通过分析基于Replication protocol定义的HTTP请求来编写一些日志解析或代理,以了解正在运行的远程复制。 但我担心你必须让它足够聪明,不要让他为常规客户做出很多假阳性的比赛。