微服务就像一个风口,NoSQL 也像一个风口。大家都开始探索和尝试使用它们,但是都有面临一个升级迁移的难题。
最近我们公司在面向用户的电商系统,随着用户越来越多,不得已需要对整个 MongoDB 数据库进行一次较大的升级。而这次升级我们对重要数据进行了数据迁移,对新系统进行支持。
关于我们是怎么迁移的,我另有其他文章回来写。本文,我们主要学习一下,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
以上希望能对大家有所帮助。如有疑问,可以通过我的微信公众号联系我。
: » MongoDB 数据库备份、迁移、恢复、还原、导入、导出教程
原创文章,作者:6024010,如若转载,请注明出处:https://blog.ytso.com/252808.html