一. 备份

使用mongodump备份,并不会备份分片信息和索引,所以恢复之后,需要手动创建对数据库和集合的分片,手动创建索引

#./bin/mongodump -h 127.0.0.1:20000 -d test -o ./test

mongodump -u root -p ‘example’ --authenticationDatabase admin -d dimensions --collection tasks -o tasks.json

参数说明

-h mongodb服务器地址和端口

-d mongodb数据库名称

-o 备份的本地目录名

二. 恢复

1、语法: mongorestore -h dbhost -d dbname --dir dbdirectory 参数或名: -h: MongoDB所在服务器地址 -d: 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2 --dir: 备份数据所在位置,例如:/home/mongodump/itcast/ --drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用! 2、实例: mongorestore -h 192.168.17.129:27017 -d itcast_restore --dir /home/mongodump/itcast/

备份要点

对 Sharded cluster 进行备份时,需要先关闭 Balancer,避免备份出来 shard、config server 数据出现不一致。

对于有访问权限控制的MongoDB集群,对集群进行备份时最好能创建一个带有“backup”角色的用户(如用户名:backupUser),并且鉴权数据库为“admin”,备份时使用此用户名,避免由于权限问题而无法备份。

movePrimary要点

movePrimary命令只能在admin数据库下操作

在使用了movePrimary命令后,必须重启mongos实例或对mongos实例使用flushRouterConfig命令

例如:

use admin

db.runCommand({movePrimary:"User", to:"shard1"})

db.runCommand("flushRouterConfig")

也可以直接拷贝data目录进行备份和恢复,使用这种方式,首先要保证没有任何写入信息,这种方式的备份缺点是占用比较大的空间。

三. 导出

1、概念: mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。 2、语法: mongoexport -d dbname -c collectionname -o file --type json/csv -f field 参数说明: -d :数据库名 -c :collection名 -o :输出的文件名 --type : 输出的格式,默认为json -f :输出的字段,如果-type为csv,则需要加上-f "字段名" 3、示例: sudo mongoexport -d mongotest -c users -o /home/python/Desktop/mongoDB/users.json --type json -f "_id,user_id,user_name,age,status"

四. 导入

1、语法:

mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field

参数说明:

-d :数据库名

-c :collection名

--type :导入的格式默认json

-f :导入的字段名

--headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段

--file :要导入的文件

2、示例:

sudo mongoimport -d mongotest -c users --file /home/mongodump/articles.json --type json

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐