Mongodbアドバンスド管理コマンド


1.collectionのクローン
コマンド形式:
>db.runCommand({coloneCollection:"db_name.collection_name",from:"dest_server_ip:port"})

説明、使用時にdb_nameをデータベース名に置き換えcollection_nameをコレクション名に置き換えdest_server_ipはリモート・データベースを表すホストipアドレスであり、portはポート番号を表す.
 
2.データベースのコピー
コマンド:copyDatabase(fromdb,todb,fromhost)
パラメータの説明:
fromdb:ソースデータベース名
todb:ターゲット・データベース名
fromhost:ソース・データベース・アドレス
> db.copyDatabase("from_db","to_db","192.168.120.133");

ローカルでデータベースをコピーする場合は、fromhostをネイティブ、すなわちlocalhostに設定すればよい. 
 
3.ディスクのリフレッシュ
Mongodbでdbを使用する.runCommand({fsync:1})コマンドは、メモリにディスクに書き込まれていない情報をディスクに書き込み、データベースの更新操作をロックしますが、次のように読み取りを続行できます(注:fsyncコマンドはadminライブラリでのみ操作できます):
> use admin
switched to db admin
> db.runCommand({fsync:1})
{ "numFiles" : 5, "ok" : 1 }
> 

データベースのステータスの検証:db.currentOp()
> db.currentOP()
{ "inprog" : [ ] }
> 

パラメータlock:1を指定して、データベースの書き込みをロックします.
> db.runCommand({fsync:1,lock:1})
{
	"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
	"seeAlso" : "http://www.mongodb.org/display/DOCS/fsync+Command",
	"ok" : 1
}
> db.users.insert({"name":"yangbei"})

上記のように、データベースへの書き込みをロックした後、書き込みを実行すると、接続セッションがブロック待機状態になります.
ロック解除:db.$cmd.sys.unlock.findOne()
> use admin
switched to db admin
> db.$cmd.sys.unlock.findOne()
{ "ok" : 1, "info" : "unlock completed" }
> db.currentOP()
{
	"inprog" : [ ],
	"fsyncLock" : 1,
	"info" : "use db.fsyncUnlock() to terminate the fsync write/snapshot lock"
}
> 

 
4.データ圧縮
コマンド:db.repairDatabase()
紹介:repairDatabaseはMongodbに組み込まれた方法で、この方法を呼び出すとMongodbはデータベース内のすべてのデータをスキャンし、インポート/エクスポートによってデータセットを再整理し、破片をきれいに整理します.しかし、この方法はdb全体の読み書き操作を非常に遅くするため、クライアントの書き込み操作を直接停止してからクリーンアップするダウンタイムメンテナンス方式を採用することが望ましい.
このコマンドを実行するとデータベースがロックされます.コマンドが実行されていないか、セッションが強制的に中断されている場合は、db.$を使用する必要があります.cmd.sys.unlock.findOne()コマンドは、ロック解除を表示します.