Java基础、中级、高级、架构面试资料

MongoDB 数据库备份、迁移、恢复、还原、导入、导出教程

业余杂谈 herman 4417浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

微服务就像一个风口,NoSQL 也像一个风口。大家都开始探索和尝试使用它们,但是都有面临一个升级迁移的难题。

最近我们公司在面向用户的电商系统,随着用户越来越多,不得已需要对整个 MongoDB 数据库进行一次较大的升级。而这次升级我们对重要数据进行了数据迁移,对新系统进行支持。

Mongo 备份与还原

关于我们是怎么迁移的,我另有其他文章回来写。本文,我们主要学习一下,MongoDB 中如何备份、还原、导入、导出数据库和数据表。

mongodb 备份

备份我们一般使用 mongodump 命令。常用的备份命令格式如下:

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径

如果想导出所有数据库,可以去掉 -d。

mongodump -h 127.0.0.1 --port 8888 -d xttblog -uxttblog -pxttblog -o home/mongodb/

还原 mongodb 数据库

MongoDB 数据库还原数据的命令格式如下:

mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径

下面看一个还原 Mongo 数据库的操作案例。

#xttblog 是这个数据库的备份路径
mongorestore -d test /home/mongodb/xttblog

需要注意的是,mongodump 和 mongorestore 两个命令操作文件的格式是和 json 类似的 bson 格式。

Mongo 导出表

MongoDB 导出表或者表中部分字段的命令是:mongoexport。常用导出表的命令格式如下:

mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段

上面命令格式的各参数介绍如下:

  • -o:指定文件名
  • -f:导出指定字段,以字号分割,-f name,email,age 导出 name,email,age 这三个字段
  • -q:可以根查询条件导出,-q '{ "_id" : "10001" }' 导出 oid 为 10001 的数据
  • –csv:表示导出的文件格式为 csv 的,这个比较有用,因为大部分的关系型数据库都是支持 csv

下面看两个我导出的案例。

#导出整张表、整个集合
mongoexport -d xttblog -c users -o /home/mongodb/xttblog/users.dat
#导出表中部分字段
mongoexport -d xttblog -c users --csv -f uid,name,sex -o xttblog/users.csv
#根据条件导出数据
mongoexport -d xttblog -c users -q '{uid:{$gt:1}}' -o xttblog/users.json

Mongo 导入表

有导出就有导入。导入,我们使用 mongoimport 命令。mongoimport 可以导入表,或者表中的部分字段。

还原整表导出的非 csv 文件的命令格式如下:

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名

–upsert 参数的作用是插入或者更新现有数据。

还原部分字段的导出文件格式如下:

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名

–upsertFields 参数和 –upsert 类似。

还原导出的csv文件格式如下:

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名

使用案例如下:

#还原导出的表数据
mongoimport -d xttblog -c users --upsert xttblog/users.dat
#部分字段的表数据导入
mongoimport -d xttblog -c users  --upsertFields uid,name,sex  xttblog/users.dat
#还原csv文件
mongoimport -d xttblog -c users --type csv --headerline --file xttblog/users.csv

以上希望能对大家有所帮助。如有疑问,可以通过我的微信公众号联系我。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » MongoDB 数据库备份、迁移、恢复、还原、导入、导出教程