前言

最近堆的需要整理的东西有点多. 慢慢把这些东西全部整理出来.
之前有使用mongoimportmongoexport导入导出单表的操作. 本次主要介绍的是mongodumpmongostore.


基本操作命令

  • 导出
./mongodump.exe -h 127.0.0.1 -p 27017 -u username -p password --authenticationDataBase SeanDataBase --db SeanDataBase -o C:\\mongodb\\dump\\

-h/--hostname: hostname
-u:username
-p: password
--authenticationDataBase: 授权数据库
--db: 指定需要导出的db. 不写导出全部.
-o: 导出文件目录. 也有不用-o, 直接写<path>的.

  • 导入
./mongorestore.exe --host 127.0.0.1 --port 27017 --db SeanDataBase2 --dir C:\\mongodb\\dump\\SeanDataBase

--host: 服务器地址
--port: 端口
--db: 导入的DB名称. 可以随意取名. 不必要和导出的名字一致.
--dir: 导入的文件地址.


操作记录

dump
mongodump -h 127.0.0.1 -port 27017 --db yanxml -o  /Users/sean/dump/
  • 导出记录
  • java 备份mongodb数据 mongodb数据库如何备份_mongodump

  • 查看导出的文件
  • java 备份mongodb数据 mongodb数据库如何备份_java 备份mongodb数据_02

  • 数据库原文件
  • java 备份mongodb数据 mongodb数据库如何备份_mongodump_03

  • 注意: 这里你会发现. Collection为4个, 但是导出的文件为6个(6/3). 这其实是不对应上的. 这个是因为文件系统, 大小写不敏感导致的. 大写文件和小写文件哪个后写会覆盖前一个文件.
导入
  • 先新建一个db. yanxml_store
  • java 备份mongodb数据 mongodb数据库如何备份_mongodump_04


  • 执行dump命令
mongorestore --host 127.0.0.1 --port 27017 --db yanxml_store --dir /Users/sean/dump/yanxml/

java 备份mongodb数据 mongodb数据库如何备份_mongodump_05


java 备份mongodb数据 mongodb数据库如何备份_mongodump_06

注意: 此处可以看到. 有一句报错语句. 这个其实是因为重名表导致的. 因为在MongoDBhelloworldHelloWorld被认为是2张表. 但是操作系统(此处为Mac)认为是一个文件. 后一个文件覆盖前一个文件, 且未覆盖完全. 所以会导致这个BSON异常. 此处的BSON异常是因为表重名导致文件覆盖导致的.


Failed: error restoring fromst.bson: reading bson input: invalid BSONSize:

这个问题. 我们后来知道了是因为大小写文件被覆盖导致的. 之前看过这些参考资料.

由于无效的BSONSize,mongorestore失败(mongorestore fails due to invalid BSONSize)

stackoverflow-1stackoverflow-2stackoverflow-3


Windows 开启目录大小写不敏感

由于工作的电脑为Windows. 此处顺便记录一下Windows如何解决大小写敏感问题.

  • 控制面板
    fsutil 不支持该请求解决办法.
  • java 备份mongodb数据 mongodb数据库如何备份_mongorestore_07

  • fsutil 不支持该请求
  • powershell执行命令

打开powershell,记得用管理员权限打开.

fsutil.exe file SetCaseSensitiveInfo 文件夹 enable

[1]. Windows文件(名/夹)大小写敏感识别方法 [2]. windows 10 大小写敏感

Linux 如何解决大小写敏感问题

linux系统大小写敏感

Mac - 20210712

后来我用mac也进行了测试. 发现mac也是大小写不区分的. Mac解决的方案要更加的麻烦.


MongoDB 如何查看版本信息

定位问题的时候. 最开始是怀疑MongoDB的版本不对.

# 进入后
db.version();
#mongo命令
./mongo --version

MongoDB查看版本信息总结


Reference

[1]. mongodb远程连接以及备份、还原、导出、导入 [2]. MongoDB 逻辑备份工具mongodump [3]. MongoDB 备份与还原 mongodump、mongorestore [4]. 菜鸟教程- MongoDB 备份(mongodump)与恢复(mongorestore) [5]. MongoDB备份和恢复命令


撑不住了. 今天的文章就写到这吧.