ArangoDB数据库目录已锁定

时间:2015-08-04 03:41:48

标签: arangodb nosql

执行时

我的主目录中

sudo arangodsudo service arangodb start

我收到以下消息

[2844] FATAL cannot start server: database directory is locked
[2867] FATAL cannot start server: database directory is locked

如何解决此错误?

1 个答案:

答案 0 :(得分:4)

通常,ArangoDB在启动时在数据库目录中创建一个锁文件,以确保没有两个 arangod 进程同时在同一个数据库目录上工作(最有可能位于/var/lib/arangodb/)。

看到上述错误可能有不同的原因:

有可能另一个ArangoDB实例仍在运行,它使用相同的数据库目录。在这种情况下,错误消息和拒绝启动是正确的。您可以通过发出arangod之类的命令来尝试了解其他正在运行的ps fax | grep arangod进程。

如果没有运行ArangoDB,如果ArangoDB的数据库目录中有一个名为LOCK的文件,启动arangod进程无法读取或写入,则可能仍会出现错误。在这种情况下,启动也将被拒绝。这可能是一个特权问题,但如果您通过sudo运行命令,则不太可能。

最后一种可能性是文件flock()上的LOCK调用因任何原因失败。在这种情况下,操作系统无法保证文件仅为刚刚启动的arangod进程锁定。这不会阻止其他arangod进程尝试并行使用相同的数据库目录,这将是不安全的。所以在这种情况下,服务器也会拒绝启动。顺便说一句,flock可能不会在所有文件系统上实现,因为它可能难以在分布式fs中实现。它应该适用于本地文件系统。

如果您100%确定没有其他arangod实例正在运行,LOCK文件没有文件权限问题且错误仍然存​​在,您可以尝试删除LOCK手动从数据库目录中获取文件并启动服务器。