MongoDB备份与恢复
1. 备份 mongodump
用法: mongodump
将mongodb里的数据导出为.bson文件
常用配置:
参数 | 用法 |
---|---|
/help | 打印帮助 |
/version | 打印工具版本 |
/v, /verbose: | 指定日志(v的数量代表了日志级别, 如:-vvvv, 也可以指定数字, 如:–verbose=N) |
/quiet | 静默执行, 不打印任何日志输出 |
/h, /host: | 指明数据库服务器的IP |
/port: | 服务端口 (也可以这么用 –host hostname:port) |
/u, /username: | 连接服务器的用户名 |
/p, /password: | 连接数据库的密码 |
/authenticationDatabase: | 存储用户凭据的数据库 |
/authenticationMechanism: | 认证机制 |
/d, /db: | 将要备份的数据库 |
/c, /collection: | 将要备份的集合(数据表) |
/o, /out: | 备份文件输出路径, 默认路径是bin下的dump 或者指定为’-’ 表示输出到控制台(例: -o -) |
2. 恢复 mongorestore
用法: mongorestore
常用配置:
同上
3. 其他方法
有时别人会把整个MongoDB的数据文件发给你, 这种”备份”方式很不推荐, 因为这样很有可能在复制文件的时候有更新操作, 导致拿到的文件时不完整的, 从而无法恢复. 使用上述备份与恢复方法可以避免这个问题.
如果拿到的是数据文件:
- 首先看是否有.wt文件, 如果有, 则说明原始库用的是WiredTiger引擎, 如果你的MongoDB是3.2以上版本, 则默认就是WiredTiger引擎, 无需额外加参数. 如果没有.wt文件, 而是有xxx.ns和xxx.0 xxx.1等文件, 则说明用的是mmap引擎, 3.2一下版本默认就是这个引擎, 而3.2以上版本需要指定参数:–storageEngine=mmapv1
- 然后看文件夹中是不是每个数据库都有自己的子文件夹, 这将决定启动mongod的时候是否需要加参数–directoryperdb, 有子文件夹则需要加这个参数, MongoDB将会去相应的子文件夹中读取数据文件
- 最后别忘了加参数–dbpath用于指定你所拿到备库文件夹的路径