一 简介:今天来聊聊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虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意,导入导出后重新建立这些信息