mongodb备份和恢复全解
目录
- 更多分享:www.catbro.cn
参数解析
参数名 | 简写 | 描述 | 示例 |
---|---|---|---|
–host | -h | 数据库所在主机的ip地址 | mongodump –host mongodb1.example.net |
–port | -p | 数据库端口号 | mongodump –port 37017 |
–username | -u | 登录数据库用户名 | mongodump –username user |
–password | -p | 数据库登录密码 | mongodump –password “pass” |
–out | -o | 指定mongodump将为转储的数据库写入BSON文件的目录。默认情况下,mongodump将输出文件保存在当前工作目录中名为dump的目录中 | mongodump –out /opt/backup/mongodump-2011-10-24 |
–db | -d | 导出的数据库 不输入则默认全部数据库 | mongodump –db test |
–archive | 要将转储输出到存档文件,不能与–out 选项并用 | mongodump –archive=test.20150715.archive –db test | |
–gzip | 版本3.2中的新功能,压缩输出。如果mongodump输出到转储目录,则新功能会压缩各个文件。这些文件的后缀为.gz。 | mongodump –gzip –db test | |
–collection | -c | 指定要备份的集合。如果未指定集合,则此选项会将指定数据库或实例中的所有集合复制到转储文件。 | mongodump –db test –collection collection |
–excludeCollection | mongodump排除数据库中指定的集合 | mongodump –db test –excludeCollection=users –excludeCollection=salaries | |
-f | 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段 | ||
–query | -q | 提供JSON文档作为查询,可选择限制mongodump输出中包含的文档。 | 可以根查询条件导出,-q ‘{ “_id” : “10001” }’ 导出uid为100的数据 |
queryFile | 版本3.2中的新功能。 指定包含JSON文档的文件的路径,该文件作为查询过滤器,用于限制mongodump输出中包含的文档。 –queryFile使您可以创建太大而无法放入终端缓冲区的查询过滤器。 | ||
–csv | 表示导出的文件格式为csv的,这个比较有用,因为大部分的关系型数据库都是支持csv,在这里有共同点 | ||
–upsert | 插入或者更新现有数据 | ||
–upsertFields | 插入或者更新现有数据 |
一、 mongodump备份数据库
一、 mongodump备份数据库
-
一般常用的备份命令格式
mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
-
如果想导出所有数据库,可以去掉-d
-
示例
mongodump -h 127.0.0.1 --port 27017 -d test -uxxxx -pxxxxx -o home/mongodb/
二、mongorestore还原数据库
-
1.常用命令格式
mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
-
示例 mongorestore -d test /home/mongodb/test #test这个数据库的备份路径
-
通过以上两个命令可以实现数据库的备份与还原
-
文件格式是json和bson的
三、mongoexport导出表,或者表中部分字段
-
常用命令格式
mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段
-
导出整张表示例
mongoexport -d test -c users -o /home/mongodb/test/users.dat
-
导出表中部分字段示例
mongoexport -d test -c users --csv -f uid,name,sex -o test/users.csv
-
根据条件敢出数据示例
mongoexport -d test -c users -q '{uid:{$gt:1}}' -o test/users.json
四、mongoimport导入表,或者表中部分字段
1、 还原整表导出的非csv文件
- 常用命令格式 mongoimport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 –upsert –drop 文件名
重点说一下–upsert,其他参数上面的命令已有提到,
2、 还原部分字段的导出文件
- 常用命令格式 mongoimport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 –upsertFields 字段 –drop 文件名
3、还原导出的csv文件
-
常用命令格式 mongoimport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 –type 类型 –headerline –upsert –drop 文件名
-
上面三种情况,还可以有其他排列组合的。
4、还原导出的表数据
-
示例
mongoimport -d test -c users --upsert test/users.dat
5、部分字段的表数据导入
- 示例 mongoimport -d test -c users –upsertFields uid,name,sex test/users.dat
6、还原csv文件
- 示例 mongoimport -d test -c users –type csv –headerline –file test/users.csv
五、直接将一个数据库数据导入另外一个数据库
-
示例:通过
|
管道到27017的数据已archive导出并直接导入27018的数据库中mongodump --archive --db test --port 27017 | mongorestore --archive --port 27018