mongodb系列~mongodb数据迁移

时间:2024-12-08 18:34:26

一 简介:今天来聊聊mongo的数据迁移
二 迁移
   1 具体迁移命令
   nohup mongodump --port --db dbname --collection tablename --query '{"sentTime": { $gt: "2018-07-13 00:00:00" } }' -o /home/data
   2 具体导入命令
   db导入
   mongorestore --port 40000 --db dbname /home/data/dbname
   collcection 和 data导入
   mongorestore --port 40000 --db dbname --collection tablename /home/data/dbname/table.json
  3 表备份命令
  db.table.renameCollection("table_20180813BACK");
  db.table_20180813.renameCollection("table");
 4 创建相应用户
   1 切换到相应库下
   2 执行创建命令
   use db
   db.createUser(
   {
   user:"user",
   pwd:"password",
   roles:[{role:"readWrite",db:"dbname"}]
    }
    )
  3 进行验证
   mongo --port -u'user' -p'password' --authenticationDatabase(有的版本可以不加) db
 5 进行查看数据有效性
三 备后注意
 1 mongodump导出的是bson格式,是二进制形式,不过可以使用mongo自带的bsondump命令查看里面的数据,而mongoexport导出的则是文本,可以是csv、json格式。
 2 JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。
 3 在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。跨版本的     mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)。
4 JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意,导入导出后重新建立这些信息