db.runCommand({fsync:1,lock:1})
{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
"ok" : 1
}
5)查看当前锁状态
db.currentOp()
说明:查询结果如下所示:
db.currentOp()
{
"inprog" : [ ],
"fsyncLock" : true,
"info" : "use db.fsyncUnlock() to terminate the fsync write/snapshot lock"
}
其中,fsyncLock为1表示MongoDB的fsync进程(负责将写入改变同步到磁盘)不允许其他进程执行写数据操作
6)解锁
use admin
db.$cmd.sys.unlock.findOne()
说明:执行解锁,结果如下所示:
use admin
switched to db admin
db.$cmd.sys.unlock.findOne()
{ "ok" : 1, "info" : "unlock completed" }
可以执行命令查看锁状态:
db.currentOp()
状态信息如下:
db.currentOp()
{ "inprog" : [ ] }
说明当前没有锁,可以执行写数据操作。
五、据备份、恢复与迁移管理
1)备份全部数据库
[root@centos6-vm01 ~]# mkdir testbak
[root@centos6-vm01 ~]# cd testbak
[root@centos6-vm01 ~]# mongodump
说明:默认备份目录及数据文件格式为./dump/[databasename]/[collectionname].bson
2)备份指定数据库
[root@centos6-vm01 ~]# mongodump -d pagedb
说明:备份数据库pagedb中的数据。
3)备份一个数据库中的某个集合
[root@centos6-vm01 ~]# mongodump -d pagedb -c page
说明:备份数据库pagedb的page集合。
4)恢复全部数据库
[root@centos6-vm01 ~]# cd testbak
[root@centos6-vm01 ~]# mongorestore --drop
说明:将备份的所有数据库恢复到数据库,--drop指定恢复数据之前删除原来数据库数据,否则会造成回复后的数据中数据重复。
5)恢复某个数据库的数据
[root@centos6-vm01 ~]# cd testbak
[root@centos6-vm01 ~]# mongorestore -d pagedb --drop
说明:将备份的pagedb的数据恢复到数据库。
6)恢复某个数据库的某个集合的数据
[root@centos6-vm01 ~]# cd testbak
[root@centos6-vm01 ~]# mongorestore -d pagedb -c page --drop
说明:将备份的pagedb的的page集合的数据恢复到数据库。
7)向MongoDB导入数据
[root@centos6-vm01 ~]# mongoimport -d pagedb -c page --type csv --headerline --drop < csvORtsvFile.csv
说明:将文件csvORtsvFile.csv的数据导入到pagedb数据库的page集合中,使用cvs或tsv文件的列名作为集合的列名。
需要注意的是,使用--headerline选项时,只支持csv和tsv文件。
--type支持的类型有三个:csv、tsv、json
其他各个选项的使用,可以查看帮助:
[root@centos6-vm01 ~]# mongoimport --help
Usage:
mongoimport <options> <file>
Import CSV, TSV or JSON data into MongoDB. If no file is provided, mongoimport reads from stdin.
See for more information.
general options:
--help print usage
--version print the tool version and exit
verbosity options:
-v, --verbose more detailed log output (include multiple times for more verbosity, e.g. -vvvvv)
--quiet hide all log output
connection options:
-h, --host= mongodb host to connect to (setname/host1,host2 for replica sets)
--port= server port (can also use --host hostname:port)
authentication options:
-u, --username= username for authentication
-p, --password= password for authentication
--authenticationDatabase= database that holds the user's credentials
--authenticationMechanism= authentication mechanism to use
namespace options:
-d, --db= database to use
-c, --collection= collection to use
input options:
-f, --fields= comma separated list of field names, e.g. -f name,age
--fieldFile= file with field names - 1 per line
--file= file to import from; if not specified, stdin is used
--headerline use first line in input source as the field list (CSV and TSV only)
--jsonArray treat input source as a JSON array
--type= input format to import: json, csv, or tsv (defaults to 'json')
ingest options:
--drop drop collection before inserting documents
--ignoreBlanks ignore fields with empty values in CSV and TSV
--maintainInsertionOrder insert documents in the order of their appearance in the input source
-j, --numInsertionWorkers= number of insert operations to run concurrently (defaults to 1)
--stopOnError stop importing at first insert/upsert error
--upsert insert or update objects that already exist
--upsertFields= comma-separated fields for the query part of the upsert
--writeConcern= write concern options e.g. --writeConcern majority, --writeConcern '{w: 3, wtimeout: 500, fsync:
true, j: true}' (defaults to 'majority')
8)从向MongoDB导出数据
[root@centos6-vm01 ~]# mongoexport -d pagedb -c page -q {} -f _id,title,url,spiderName,pubDate --csv > pages.csv