锁文件如何在各个mongods之间共享

How the lock file is shared among the various mongods

我正在尝试设置分片和副本集。

我的假设程序是这样的:

  1. 启动副本集(只做一个,仅供测试)
  2. mongo 然后启动副本
  3. 启动配置服务器(再次让它成为一个,仅用于测试)
  4. 启动一个分片服务器(再次让它只是一个)
  5. 添加分片并通过 mongo
  6. 启用 sharding

我做了什么:

  1. mongod --replSet rs0 --dbpath data/rs0-0 --unixSocketPrefix data/rs0-0
  2. mongo 然后 rs.initiate()
  3. mongod --configsvr --dbpath data/rs0-0 --unixSocketPrefix data/rs0-0

-- 现在卡在第 3 步。

我发现的错误是 2017-05-22T20:00:13.857+0530 [initandlisten] exception in initAndListen: 10310 Unable to lock file: data/rs0-0/mongod.lock. Is a mongod instance already running?, terminating

我尝试过的:

我曾尝试使用不同的目录来设置 --unixSocketPrefix 选项,但每次它都命中 data/rs0-0/mongod.lock 同一个文件。所以没用

这似乎是一个简单的问题,但无法弄清楚锁文件是如何在各种 mongods 之间共享的(无论是配置服务器、副本集还是分片服务器)

我在mongodb2.6.12

您需要使用 不同 dbpath 选项启动 mongodconfig server。 您可以按照以下步骤操作:

mongod --replSet rs0 --dbpath data/rs0-0 --unixSocketPrefix data/rs0-0

mongod --replSet rs0 --dbpath data/rs0-0

mongo 然后 rs.initiate()

mkdir -p /data/configdb(递归授予所需权限)

mongod --configsvr --dbpath /data/configdb --port 27019