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
その他のオプションの使用方法については、ヘルプを参照してください.
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クエリー条件の指定
その他のオプションの使用方法については、ヘルプを参照してください.
注意:
上記のオプション-qがクエリー条件を指定する場合は、次のように単一引用符で囲む必要があります.
次のエラーが発生します.
(二)リモート接続管理
1.mongoによるリモート接続
mongoによる接続により、パラメータオプションを非常に柔軟に選択できます.コマンドヘルプを参照してください.以下に示します.
2、MongoDBがサポートするjavascriptに基づいてリモート接続を実現する
リモートのMongoDBデータベース・サーバに接続した場合(たとえば、mongoで192.168.0.184に接続)、このセッションで別のリモートのデータベース・サーバに接続したい場合(192.168.0.197)、次のコマンドを実行できます.
上記MongoDBから提供されたJavaScriptスクリプトにより、別のリモート・データベース・サーバへの接続を実現し、指定されたデータベースpagedbのpageセットを操作します.
セキュリティ認証モードが有効になっている場合は、次のような認証アカウントを指定して、データベース接続インスタンスを取得できます.
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