Docker Couchdb 3.1.0群集-重新启动一个节点后加载数据库失败

Docker Couchdb 3.1.0群集-重新启动一个节点后加载数据库失败,docker,couchdb,Docker,Couchdb,情况如下:在由两个节点组成的couchdb集群上,每个节点都是服务器(ip1和ip2)上的couchdb docker实例。我必须重新启动一台服务器并重新启动docker,然后我的两个couchdb实例都会为每个数据库显示:“此数据库加载失败。” 我可以连接Futon并查看数据库的完整列表,但仅此而已。关于Futon的“验证Couchdb安装”,我有几个错误(只有“创建数据库”是绿色检查) 容器的docker日志显示以下错误: "internal_server_error : No DB sha

情况如下:在由两个节点组成的couchdb集群上,每个节点都是服务器(ip1和ip2)上的couchdb docker实例。我必须重新启动一台服务器并重新启动docker,然后我的两个couchdb实例都会为每个数据库显示:“此数据库加载失败。”

我可以连接Futon并查看数据库的完整列表,但仅此而已。关于Futon的“验证Couchdb安装”,我有几个错误(只有“创建数据库”是绿色检查)

容器的docker日志显示以下错误:

"internal_server_error : No DB shards could be opened"
我试图通过将.coach和shard/文件复制到couchdb的本地实例来本地恢复数据库,但同样的问题也发生了

如何检索数据


PS:我用
erl
检查了两个节点之间的连接,没有问题。看起来docker在重启时弄乱了一些couchdb配置文件。

好吧,以防有人犯同样的错误:

当您有一个2节点群集时,couchdb@ip1和couchdb@ip2,并从中创建群集couchdb@ip1:

1) 如果节点couchdb@ip2停止,则群集设置会出错(couchdb@ip1将不再工作),重新启动时,节点似乎无法正确连接,数据库将出现但不可用

2) 另一方面,停止和启动couchdb@ip1不要引起任何问题

案例1中的解决方案是使用2个新的couchdb实例重新创建集群(couchdb@ip1和couchdb@ip2),然后将数据库复制到一个couchdb实例上,所有数据库都将返回

如果有人能详细解释为什么会发生这种情况?这也意味着此群集配置绝对不可靠(如果couchdb@ip2如果关闭,则什么都不起作用),我想这与3节点群集不同?

元数据和克隆节点 各个数据库都具有指示其碎片存储在哪些节点上的属性,这些属性是基于创建而构建的,因此仅复制数据库文件实际上不会将数据库移动或镜像到新节点上。(如果元数据设置正确,则碎片将由沙发本身复制,因此。)

副本计数 2节点集群通常没有意义。与文件系统RAID一样,您可以通过条带化实现最大性能和一半可靠性,也可以创建镜像,但除非单个节点状态具有完美的一致性检测,否则无法自动确定两个节点中的哪一个不正确,而确定三个节点中的哪一个不正确则很容易自动执行。因此,大多数集群都有3个或更多节点,每个碎片在任意3个节点上都有3个副本