2012-05-03 15 views
1

私はmongoデータを別のドライブに移動中です。移動したいデータはすべて/ data/dbに保存されており、NAS(Network Attached Storage)に移動しています。Mongoデータベースを別のドライブに移動:lockfilepathのロックを取得できません

まずステップ:これはモンゴ-TEMPで/そのようなファイルツリーを作成し

mongodump -d mydb -c mycollection -o nas/mongo-temp 

:私は、その後のmongodサービスを停止し、新しい/ data/dbディレクトリを作成し
dump 
`-- mydb 
    `-- mycollection.bson 

1 directory, 1 file 

/etc/init.d/mongod stop 
mkdir mongo-temp/data/db 

...と/etc/mongodb.conf

でDBPATHラインを変更
dbpath=.../mongo-temp/data/db 

/etc/init.d/mongod startを使用して正常にmongoサーバーを再起動しました。

私が接続しよう:

mongo 
MongoDB shell version: 1.6.4 
Thu May 3 09:53:23 *** warning: spider monkey build without utf8 support. consider rebuilding with utf8 support 
connecting to: test 
Thu May 3 09:53:24 Error: couldn't connect to server 127.0.0.1 (anon):1154 
exception: connect failed 

私はコマンドmongod --dbpath .../mongo-temp/data/dbでのmongodを起動しようとしましたが、私はというエラーを取得:ロックファイルを削除する

Thu May 3 09:57:26 exception in initAndListen std::exception: Unable to acquire lock for lockfilepath: /home/dlpstats/nas-mnt/mongo-temp/data/db/mongod.lock 

は役立ちませんが。 --dbpathなしでmongodコマンドを実行すると、サーバーは正常に起動し、古いデータベースに対してクエリを実行することができます。

答えて

0

mongo-tempのディレクトリと親ディレクトリのアクセス許可を確認します。おそらくそれはmongodbユーザーとして実行されていますか?

ファイルを作成するには、ディレクトリ(および親ディレクトリ)に対して実行権限が必要です。ディレクトリに対して実行権限を与えることで、そこにファイルをリストすることができます。このファイルは、ファイルを開いて書き込みできるようにするために必要です。

+0

私はあなたが上記のものを含む様々な許可を試みました。同じ結果。 – SemperFly

+1

/etc/passwdのmongodbユーザーにシェルを設定し、そのユーザーに切り替えて、そのフォルダーに移動してファイルを作成してみてください。ファイルを作成できる場合は、アクセス権の問題ではありません。私はそれが強い気がします。 –

+0

まだダイスはありません。ロックファイルを作成することはできますが、ロックを取得することはできません。 – SemperFly

2

最初に、mongodumpを使って新しいドライブを作成したと述べましたが、これは単なるバックアップの方法ですか、それとも新しいデータベースファイルにするつもりでしたか?それはどのように動作するのか - mongodumpの出力はデータベースファイルと同じではありません - mongoresoreで再インポートする必要があります。ストレートデータファイルコピーを行うと、転送はシームレスになります。その後

だけでなく、彼の答えにウェスによって提案された権限、チェックするためにいくつかのより多くの事:

  1. あなたは成功し、完全に古いサーバーをシャットダウンしている - それは可能だ、それが誤報告されたエラーですすでに開かれているポートをつかむために取得しています
  2. mongoシェルの出力に従ってバージョン1.6.4を使用していますが、11.04などのUbuntuレポからインストールしたものと思われます。良い選択肢ではありません - この時点で1.6は非常に古いです。少なくとも10genレポ(http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages)を使用するか、バイナリをダウンロードして、より新しいバージョン

最後を取得ではなく、手動でのmongodを起動すると、すべての引数はポートのように、同じであることを確認してください。 mongoシェルを介して接続するときは、mongodを起動したポートを指定してください。このような問題に踏み込んだときのデフォルトに依存しないでください。私は、コマンドに続く、この問題と発行に直面した

+0

ダンプは単なるバックアップ方法です。私は復元を認識していて、サーバーを稼働させたら使用するつもりです。私は1と2をチェックします。ありがとう – SemperFly

+0

私はCentOSです。 mongoをインストールするには、http://www.mongodb.org/display/DOCS/CentOS+andFedora+Packagesの手順に従いました。 CentOS用の新しいリポジトリソースはありますか? – SemperFly

+0

いいえ、それは正しいソースですが、あなたは非常に古いバージョンを実行しているようです - おそらくmongodb(デフォルトリポジトリにヒットする)をインストールし、mongo-10genなどはインストールしないでください。 1.6.4 –

1

は私の問題を解決しました。その後、

rm /var/lib/mongodb/mongod.lock 

そしてmongodを再起動します。

私はそれが良い解決策であるかどうかはわかりません。

関連する問題