一.mongodump备份
mongodump主要是用于库和集合的备份,适用于数据量比较小的场景,不适用于大数据量的备份
- 仅备份数据库中的文档,不备份索引
- 备份过程会对mongod服务性能产生影响
使用语法:
mongodump
常用参数
| 参数 | 说明 |
|---|---|
| -h, --host | 数据库ip地址 |
| –port | 数据库端口 |
| -u, --username | 数据库用户 |
| -p, --password | 用户密码 |
| --authenticationDatabase | 用户所在库 |
| --authenticationMechanism | 认证机制 |
| --help | 帮助信息 |
| --version | 版本信息 |
| -v, --verbose | 输出详细日志信息 |
| --quiet | 安静输出 |
| -d, --db | 数据库名称 |
| -c, --collection | 集合名称 |
| -j, --numParallelCollections | 备份进程数,默认4个 |
| --uri | 指定mongodb-uri的的登录方式 |
| -q, --query | 查询条件 |
| --queryFile | 以文件信息导入查询条件信息 |
| --readPreference= | 指定一个首选项名称或首选项json对象 |
| --forceTableScan | 强制扫描全表 |
| -o, --out | 输出文件路径 |
| --gzip | gzip方式压缩输出文件 |
| --repair | 修复文档,部分引擎支持 |
| --oplog | mongodump将会在执行备份期间的oplog日志输出到文件oplog.bson,即记录备份期间的数据集操作 |
| --archive | 归档路径 |
| --dumpDbUsersAndRoles | 备份创建的用户和角色 |
| --excludeCollection | 指定不备份的集合名称 |
| --viewsAsCollections | 将视图按照正常集合形式备份 |
测试
- 转储成bson和json的备份文件形式
- bson二进制文件,可以使用mongodb自带命令工具bsondump进行解析
## 备份所有库,即整个实例
./mongodump --host 127.0.0.1 --port 27017 -u root -p 123456 -o /temp/mongodb-2021-12-26
## 备份指定数据库
./mongodump --host 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase=admin -d test -o /temp/mongodb-test
## 备份指定的集合
./mongodump --host 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase=admin -d test -c test -o /temp/mongodb-test.test
## 备份指定条件
./mongodump --host 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase=admin -d test -c user --query='{age:"{$lt:19}"}' -o user
二.mongorestore数据恢复
mongorestore仅仅执行insert操作,不执行update操作。同时mongorestore不恢复system.profile的数据
使用语法:
mongorestore
常用参数
| 参数 | 说明 |
|---|---|
| -h, --host | 数据库ip地址 |
| –port | 数据库端口 |
| -u, --username | 数据库用户 |
| -p, --password | 用户密码 |
| --authenticationDatabase | 用户所在库 |
| --authenticationMechanism | 认证机制 |
| --help | 帮助信息 |
| --version | 版本信息 |
| -v, --verbose | 输出详细日志信息 |
| --quiet | 安静输出 |
| -d, --db | 数据库名称 |
| -c, --collection | 集合名称 |
| --uri | 指定mongodb-uri的的登录方式 |
| --excludeCollection | 指定跳过某个或某些集合不进行恢复 |
| --excludeCollectionsWithPrefix | 指定跳过一系列符合某些前缀的集合不进行恢复 |
| --nsExclude | 指定不包含namespaces |
| --nsInclude | 指定包含namespaces |
| --nsFrom 和 --nsTo | 重命名namespaces,这个两个参数要同时一起使用 |
| --objcheck | 数据插入前进行校验 |
| --oplogReplay | 重放oplog进行快照恢复 |
| --oplogLimit | 限定恢复数据 |
| --oplogFile | oplog文件路径 |
| --archive | 指定归档路径恢复 |
| --restoreDbUsersAndRoles | 恢复用户和权限 |
| --dir | 恢复的数据路径 |
| --gzip | gzip解压 |
| --drop | 导入之前先删除集合 |
| --dryRun | 预执行,并不实际运行,可用于正在操作之前进行检测 |
| --noIndexRestore | 不恢复索引 |
| --noOptionsRestore | 不恢复集合 |
| --keepIndexVersion | 保持索引版本不变 |
| --maintainInsertionOrder | 保持插入顺序 |
| -j, --numParallelCollections | 恢复的并发进程数,默认4 |
| --numInsertionWorkersPerCollection | 每个集合要并发运行的插入操作数,默认1 |
| --stopOnError | 如果在插入时遇到错误,则停止恢复 |
| --bypassdocumentValidation | 忽略文档验证 |
| --preserveUUID | 保留原始集合uuid,默认是关闭 |
测试
./mongorestore --host 127.0.0.1 --port 27017 -u root -p 123456 /temp/mongodb-2021-12-26/



