ArangoDB 数据库目录被锁定
ArangoDB database directory locked
当我执行
sudo arangod
或 sudo service arangodb start
在我的主目录中
我收到以下消息
[2844] FATAL cannot start server: database directory is locked
[2867] FATAL cannot start server: database directory is locked
我该如何解决这个错误?
一般情况下,A运行goDB在启动时会在数据库目录下创建一个lockfile,以确保不会有两个a运行god进程同时工作在同一个数据库目录中(很可能位于 /var/lib/arangodb/
)。
看到上面的错误可能有不同的原因:
有可能另一个A运行goDB实例仍然运行使用相同的数据库目录。在这种情况下,错误信息和拒绝启动是有正当理由的。您可以尝试通过发出 ps fax | grep arangod
.
之类的命令来了解其他 运行 arangod
进程
如果没有A运行goDB 运行,如果A运行goDB的数据库目录下有一个名为LOCK
的文件,也可能会报错启动的 arangod
进程不可读或可写。在这种情况下,启动也会被拒绝。这可能是一个特权问题,但如果您通过 sudo
.
运行 命令,则不太可能
最后一种可能性是对文件 LOCK
的 flock()
调用由于某种原因失败了。在这种情况下,OS 不能 gua运行 确定文件是专门为刚刚启动的 arangod
进程锁定的。这不会阻止其他 arangod
进程尝试并行使用相同的数据库目录,这是不安全的。所以在这种情况下,服务器也会拒绝启动。顺便说一下,flock
可能不会在所有文件系统上实现,因为它可能很难在分布式 fs 中实现。但是它应该适用于本地文件系统。
如果您 100% 确定没有其他 arangod
实例是 运行,LOCK
文件没有文件权限问题并且错误仍然存在,您可以尝试删除LOCK
文件从数据库目录手动启动服务器。
当我执行
sudo arangod
或 sudo service arangodb start
在我的主目录中
我收到以下消息
[2844] FATAL cannot start server: database directory is locked
[2867] FATAL cannot start server: database directory is locked
我该如何解决这个错误?
一般情况下,A运行goDB在启动时会在数据库目录下创建一个lockfile,以确保不会有两个a运行god进程同时工作在同一个数据库目录中(很可能位于 /var/lib/arangodb/
)。
看到上面的错误可能有不同的原因:
有可能另一个A运行goDB实例仍然运行使用相同的数据库目录。在这种情况下,错误信息和拒绝启动是有正当理由的。您可以尝试通过发出 ps fax | grep arangod
.
arangod
进程
如果没有A运行goDB 运行,如果A运行goDB的数据库目录下有一个名为LOCK
的文件,也可能会报错启动的 arangod
进程不可读或可写。在这种情况下,启动也会被拒绝。这可能是一个特权问题,但如果您通过 sudo
.
最后一种可能性是对文件 LOCK
的 flock()
调用由于某种原因失败了。在这种情况下,OS 不能 gua运行 确定文件是专门为刚刚启动的 arangod
进程锁定的。这不会阻止其他 arangod
进程尝试并行使用相同的数据库目录,这是不安全的。所以在这种情况下,服务器也会拒绝启动。顺便说一下,flock
可能不会在所有文件系统上实现,因为它可能很难在分布式 fs 中实现。但是它应该适用于本地文件系统。
如果您 100% 确定没有其他 arangod
实例是 运行,LOCK
文件没有文件权限问题并且错误仍然存在,您可以尝试删除LOCK
文件从数据库目录手动启动服务器。