MongoDBのデータバックアップリカバリ移行とリモート接続コマンド(3)


(一)データバックアップ、リカバリと移行管理
 
1、すべてのデータベースをバックアップする
mkdir testbak
cd testbak
mongodump
説明:デフォルトのバックアップディレクトリおよびデータファイルフォーマットは./dump/[databasename]/[collectionname].bson
2、指定データベースのバックアップ
mongodump -d pagedb
説明:データベースpagedbのデータをバックアップします.
3、データベースのセットをバックアップする
mongodump -d pagedb -c page
説明:データベースpagedbのpageセットをバックアップします.
4、すべてのデータベースを復元する
cd testbak
mongorestore --drop
説明:バックアップしたすべてのデータベースをデータベースにリカバリします.dropは、リカバリデータを指定する前に元のデータベースデータを削除します.そうしないと、リカバリ後のデータにデータが重複します.
5、あるデータベースのデータを回復する
cd testbak
mongorestore -d pagedb --drop
説明:バックアップしたpagedbのデータをデータベースに復元します.
6、あるデータベースのある集合のデータを回復する
cd testbak
mongorestore -d pagedb -c page --drop
説明:バックアップしたpagedbのpageセットのデータをデータベースに復元します.
7、MongoDBへのデータのインポート
mongoimport -d pagedb -c page --type csv --headerline --drop < csvORtsvFile.csv
説明:ファイルcsvORtsvFile.csvのデータはpagedbデータベースのpageセットにインポートされ、cvsまたはtsvファイルのカラム名をセットのカラム名として使用します.--headerlineオプションを使用する場合、csvファイルとtsvファイルのみがサポートされます.
--typeがサポートするタイプは3つあります:csv、tsv、json
その他のオプションの使用方法については、ヘルプを参照してください.
mongoimport --help  
options:  
  --help                  produce help message  
  -v [ --verbose ]        be more verbose (include multiple times for more  
                          verbosity e.g. -vvvvv)  
  -h [ --host ] arg       mongo host to connect to ( <set name>/s1,s2 for sets)  
  --port arg              server port. Can also use --host hostname:port  
  --ipv6                  enable IPv6 support (disabled by default)  
  -u [ --username ] arg   username  
  -p [ --password ] arg   password  
  --dbpath arg            directly access mongod database files in the given  
                          path, instead of connecting to a mongod  server -  
                          needs to lock the data directory, so cannot be used  
                          if a mongod is currently accessing the same path  
  --directoryperdb        if dbpath specified, each db is in a separate  
                          directory  
  -d [ --db ] arg         database to use  
  -c [ --collection ] arg collection to use (some commands)  
  -f [ --fields ] arg     comma separated list of field names e.g. -f name,age  
  --fieldFile arg         file with fields names - 1 per line  
  --ignoreBlanks          if given, empty fields in csv and tsv will be ignored  
  --type arg              type of file to import.  default: json (json,csv,tsv)  
  --file arg              file to import from; if not specified stdin is used  
  --drop                  drop collection first  
  --headerline            CSV,TSV only - use first line as headers  
  --upsert                insert or update objects that already exist  
  --upsertFields arg      comma-separated fields for the query part of the  
                          upsert. You should make sure this is indexed  
  --stopOnError           stop importing at first error rather than continuing  
  --jsonArray             load a json array, not one item per line. Currently  
                          limited to 4MB.  

8.MongoDBへのデータのエクスポート
mongoexport -d pagedb -c page -q {} -f _id,title,url,spiderName,pubDate --csv > pages.csv
説明:pagedbデータベース内のpageセットのデータをpagesにエクスポートする.csvファイル、各オプションの意味:
-f cvsカラム名を_と指定id,title,url,spiderName,pubDate
-qクエリー条件の指定
その他のオプションの使用方法については、ヘルプを参照してください.
mongoexport --help  
options:  
  --help                  produce help message  
  -v [ --verbose ]        be more verbose (include multiple times for more verbosity e.g. -vvvvv)  
  -h [ --host ] arg       mongo host to connect to ( <set name>/s1,s2 for sets)  
  --port arg              server port. Can also use --host hostname:port  
  --ipv6                  enable IPv6 support (disabled by default)  
  -u [ --username ] arg   username  
  -p [ --password ] arg   password  
  --dbpath arg            directly access mongod database files in the given  
                          path, instead of connecting to a mongod  server -  
                          needs to lock the data directory, so cannot be used  
                          if a mongod is currently accessing the same path  
  --directoryperdb        if dbpath specified, each db is in a separate directory  
  -d [ --db ] arg         database to use  
  -c [ --collection ] arg collection to use (some commands)  
  -f [ --fields ] arg     comma separated list of field names e.g. -f name,age  
  --fieldFile arg         file with fields names - 1 per line  
  -q [ --query ] arg      query filter, as a JSON string  
  --csv                   export to csv instead of json  
  -o [ --out ] arg        output file; if not specified, stdout is used  
  --jsonArray             output to a json array rather than one object per line  

注意:
上記のオプション-qがクエリー条件を指定する場合は、次のように単一引用符で囲む必要があります.
mongoexport -d page -c Article -q '{"spiderName": "mafengwoSpider"}' -f _id,title,content,images,publishDate,spiderName,url --jsonArray > mafengwoArticle.txt  

次のエラーが発生します.
ERROR: too many positional options 

(二)リモート接続管理
1.mongoによるリモート接続
mongo -u admin -p admin 192.168.0.197:27017/pagedb

mongoによる接続により、パラメータオプションを非常に柔軟に選択できます.コマンドヘルプを参照してください.以下に示します.
mongo --help  
MongoDB shell version: 1.8.3  
usage: mongo [options] [db address] [file names (ending in .js)]  
db address can be:  
  foo                   foo database on local machine  
  192.169.0.5/foo       foo database on 192.168.0.5 machine  
  192.169.0.5:9999/foo  foo database on 192.168.0.5 machine on port 9999  
options:  
  --shell               run the shell after executing files  
  --nodb                don't connect to mongod on startup - no 'db address'   
                        arg expected  
  --quiet               be less chatty  
  --port arg            port to connect to  
  --host arg            server to connect to  
  --eval arg            evaluate javascript  
  -u [ --username ] arg username for authentication  
  -p [ --password ] arg password for authentication  
  -h [ --help ]         show this usage information  
  --version             show version information  
  --verbose             increase verbosity  
  --ipv6                enable IPv6 support (disabled by default)  

2、MongoDBがサポートするjavascriptに基づいてリモート接続を実現する
リモートのMongoDBデータベース・サーバに接続した場合(たとえば、mongoで192.168.0.184に接続)、このセッションで別のリモートのデータベース・サーバに接続したい場合(192.168.0.197)、次のコマンドを実行できます.
> var x = new Mongo('192.168.0.197:27017')  
> var ydb = x.getDB('pagedb');  
> use ydb  
switched to db ydb  
> db  
ydb  
> ydb.page.findOne()  
{  
        "_id" : ObjectId("4eded6a5bf3bfa0014000003"),  
        "content" : "        ,  ...",  
        "pubdate" : "2006-03-19",  
        "title" : "  :         ",  
        "url" : "http://france.bytravel.cn/Scenery/528/cblsegdbl.html"  
}  

上記MongoDBから提供されたJavaScriptスクリプトにより、別のリモート・データベース・サーバへの接続を実現し、指定されたデータベースpagedbのpageセットを操作します.
セキュリティ認証モードが有効になっている場合は、次のような認証アカウントを指定して、データベース接続インスタンスを取得できます.
> var x = new Mongo('192.168.0.197:27017')  
> var ydb = x.getDB('pagedb', 'shirdrn', '(jkfFS$343$_\=\,.F@3');  
> use ydb  
switched to db ydb