我正在测试一个具有默认复制,默认分片的20节点集群,并且最近想要从默认的“elasticsearch”重命名集群。因此,我更新了配置群集名称,并另外重命名了
中的数据mylocation/data/OldName
到
mylocation/data/NewName
当然包含:
nodes/0
nodes/1
等...
大约一个月后,我再次加载我的集群,我看到虽然所有20个节点都重新上线,但它会显示0个活动分片,0个主分片等等,这应该是几千个。状态为绿色,没有任何内容正在初始化,除了没有数据外什么都不是。我查看nodes/0
,我看到nodes/0/indices/
填充了我的索引名称:数据实际上在磁盘上。但似乎没有什么可以让它实际加载碎片。配置使用正确的Des.path.data=mylocation/data/
。
可能有什么问题,我该如何调试呢?我相当自信我在装载它之后运行了一个星期,但它是在一段时间之前,也许其他事情已经改变了。奇怪的是,它似乎无法识别它指向的任何数据,并且它没有给我任何“我看不到你的数据”或“无法读取或写入该数据”的错误信息。
更新
它开始后说:
将[0]索引恢复到cluster_state。
我用谷歌搜索了它,这听起来像版本兼容性。检查了我的二进制文件,这似乎不是问题。我一直在使用1.3.2。
更新2
20个节点中的一个重复失败 ElasticsearchillegalStateException [无法获取节点锁定,以下位置是否可写?]
它列出了可写的正确数据目录。我应该删除节点锁吗?当群集关闭时,某些node.locks是664,有些是640。这是正常的还是可能是不洁的关闭的遗物?
其中一些重复吗?我有40个节点,20个是640,20个是664。
更新3
在lucene级别有写锁定。所以
数据/新名称/节点/ 1 /索引/ INDEXNAME / 4 /索引/ write.lock
存在。这是移动分片失败的原因吗?我可以安全地删除每个写锁定,还是_state文件中存在会导致不一致的共享状态?