1

mongo データを別のドライブに移動中です。移動したいデータはすべて /data/db に保存されており、NAS (ネットワーク接続ストレージ) に移動しています。

最初の一歩:

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

これにより、次のように mongo-temp/ にファイル ツリーが作成されました。

dump
`-- mydb
    `-- mycollection.bson

1 directory, 1 file

次に、mongod サービスを停止し、新しい /data/db ディレクトリを作成しました。

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

...そして /etc/mongodb.conf の dbpath 行を変更しました

dbpath=.../mongo-temp/data/db

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

接続しようとすると:

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を起動しようとしましたmongod --dbpath .../mongo-temp/data/dbが、次のようなエラーが表示されます:

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 コマンドを実行すると、サーバーは正常に起動し、古いデータベースに対してクエリを実行できます。

4

3 に答える 3

2

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

次に、彼の回答で Wes が提案したアクセス許可と同様に、さらにいくつかの確認事項があります。

  1. 古いサーバーを正常かつ完全にシャットダウンしたこと - 誤って報告されたエラーである可能性があり、既に開いているポートを取得しようとしているためにエラーが発生している可能性があります
  2. mongo シェル出力によると、バージョン 1.6.4 を使用しています。私の推測では、Ubuntu リポジトリから 11.04 または同様のものをインストールしたと思われます。これは適切なオプションではありません。この時点で 1.6 は非常に古いものです。10gen リポジトリ ( http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages ) を使用するか、バイナリをダウンロードして最新バージョンを入手してください

最後になりましたが、mongod を手動で起動するときは、ポートなどのすべての引数が同じであることを確認してください。mongo シェル経由で接続する場合は、mongod を起動したポートを指定します。このような問題が発生した場合は、デフォルトに頼らず、明示してください。

于 2012-05-03T19:26:05.837 に答える
1

この問題に直面し、次のコマンドを発行して問題を解決しました。

rm /var/lib/mongodb/mongod.lock 

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

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

于 2014-04-10T13:32:59.620 に答える
0

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

そこにファイルを作成するには、ディレクトリ (および親ディレクトリ) に対する実行権限が必要です。ディレクトリに対する実行権限を使用すると、そこにあるファイルを一覧表示できます。これは、ファイルを書き込み用に開くために必要です。

于 2012-05-03T17:27:01.423 に答える