知识库

"storeId 与当前机器不一致" 错误解释

如果您在 $NEO4J_HOME/logs/debug.log 中遇到类似以下内容的 "Failed to serve TxPullRequest for …​ storeId xxxxxx because that storeId is different from this machine with Store…​" 错误:

INFO [o.n.c.c.t.TxPullRequestHandler] Failed to serve TxPullRequest for tx 29193 and
storeId Store{creationTime:1591347647541, randomId:6812995525063259919, upgradeTime:1591347647541, upgradeId:1}
because that storeId is different from this machine with Store
{creationTime:1595941375808, randomId:-4448032294085490672, upgradeTime:1595941375808, upgradeId:1}

这意味着 storeId 不一致。当 Neo4j 实例启动时,您会在 debug.log 中看到类似以下的条目:

INFO [o.n.c.c.s.LocalDatabase] Starting with storeId: Store
{creationTime:1582039045717, randomId:4716225943436743213, upgradeTime:1582039045717, upgradeId:1}

Neo4j 因果集群中的所有实例都将在 `debug.log` 中显示类似上述的 storeId(列为 `randomId`)条目。如果集群中任何成员的 storeId 不同,则会出现“storeId 与当前机器不一致”错误。

如何解决此不匹配问题?

  1. 找到 randomId 最高的 Neo4j 节点,此 ID 即为上述示例中显示的 storeId

  2. 对上述节点进行在线备份

  3. 停止 randomId 较低的实例

  4. 执行 $bin/neo4j-admin unbind

  5. 在这些实例上还原备份

  6. 启动 Neo4j

如果您对本主题有任何疑问或遇到此错误,请随时向 Neo4j 支持团队提交工单。