数据的备份、恢复以及导出、导入是数据库管理工作中的重要内容,MongoDB提供了一整套的工具来完成这些工作。
1.数据备份mongodump
mongodump用于数据备份,它的工作原理是对MongoDB进行普通查询后将结果写入文件。
mongodump -d test -o /tmp/
还可以通过-c及-q选项指定需要备份的集合和筛选条件
mongodump -d test -c user -q "{name:'tom'}" -o /tmp/
备份执行完成后,会在-o指定的目录下以数据库名创建一个目录,数据文件存放在这个目录中。
mongodump的更多用法可以通过–help查看
mongodump --help
2.数据恢复mongorestore
mongorestore与mongodump配合使用,mongorestore用于数据恢复的文件就是mongodump备份的数据文件。
mongorestore -d test /tmp/test --drop
–drop表示如果数据库已存在则删除原数据库,不加–drop参数则会将用于恢复的数据库与原数据库合并。
3.数据导出mongoexport
mongodump主要是针对库的备份,MongoDB还提供了针对集合的备份工具mongoexport。mongoexport比较灵活,可以指定导出的格式已经导出的字段。
- 导出JSON格式
mongoexport -d test -c user -o /tmp/test.user.dat
- 导出CSV格式
mongoexport -d test -c user --csv -f _id,name,age -o /tmp/test.user.csv
另外,mongoexport也可以使用-q参数增加筛选条件。
4.数据导入mongoimport
mongoimport与mongoexport配合,使用mongoexport导出的备份文件进行数据恢复。
- JSON格式数据导入
mongoimport -d test -c user --type json /tmp/test.user.dat --upsert
–type参数的默认值是json,如果导入json格式数据,可以不使用。
–upsert表示更新现有数据,如果部使用–upsert,导入数据时遇到_id重复时不会插入数据。另外也可以使用–drop删除原数据。
- CSV格式数据导入
mongoimport -d test -c user --type csv --headerline --file /tmp/test.user.csv --drop
其中–headerline表示不导入csv文件的第一行,因为csv文件第一行为列名。