(1) mongoexport / mongoimport
(2) mongodump / mongorestore
应用场景总结:
1.异构平台迁移 mysql的数据可以迁移到MOngoDB
2.同平台,跨大版本:mongodb2 ----> mongodb 3
mongoexport / mongoimport 可以到出格式为 json csv
日常备份恢复时使用
mongodump / mongorestore
mongoexport语法
mongoexport --help 帮助
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-f:指明要导出那些列
-o:指明要导出的文件名
-q:指明导出数据的过滤条件
下面我们来举例导出操作
[root@localhost mongo_clusetr]# mkdir backup
[root@localhost mongo_clusetr]# mongodb/bin/mongo db:28017
可以看到test库下的te表示有数据的
dba1:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
dba1:PRIMARY> use db
switched to db db
dba1:PRIMARY> use test
switched to db test
dba1:PRIMARY> db
test
dba1:PRIMARY> show tables
te
test
dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("636f63745a73f86992679cef"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("636f63be5a73f86992679cf0"), "name" : "gao", "age" : 11 }
举例:
可以看到已经可以查到数据了
[root@localhost mongo_clusetr]# mongodb/bin/mongoexport --port 28017 -d test -c te -p backup/te.json
[root@localhost mongo_clusetr]# ll backup/
total 4
-rw-r--r--. 1 root root 138 Nov 23 21:37 log.json
举例:
-f是指定需要导出那些字段 --type指定格式
[root@localhost mongo_clusetr]# mongodb/bin/mongoexport --port 28017 -d test -c te --type=csv -f name,age -o /opt/mongo_clusetr/backup/log.csv
可以看到已经是查到两条数据了
[root@localhost mongo_clusetr]# ll backup/
total 8
-rw-r--r--. 1 root root 25 Nov 23 21:40 log.csv
-rw-r--r--. 1 root root 138 Nov 23 21:37 log.json
mongoimport --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-f:指明要导入那些列
可以把刚才导出的数据恢复
可以恢复到别的库中查看一下,不删除原来的数据
将导出格式为jsoon的数据恢复到另一个库中
[root@localhost mongo_clusetr]# mongodb/bin/mongoimport --port 28017 -d gao -c te backup/log.json
可以看到已经恢复到了gao的库中
dba1:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
gao 0.000GB
local 0.000GB
test 0.000GB
dba1:PRIMARY> use gao
switched to db gao
@(shell):1:1
dba1:PRIMARY> db
gao
dba1:PRIMARY> show tables
te
dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("636f63745a73f86992679cef"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("636f63be5a73f86992679cf0"), "name" : "gao", "age" : 11 }
dba1:PRIMARY>
-c 指定表明 -d 库名 --type=csv格式 --file 路径
[root@localhost mongo_clusetr]# mongodb/bin/mongoimport --port 28017 -d db -c te --type=csv -f name,age --file /opt/mongo_clusetr/backup/log.csv
dba1:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
db 0.000GB
gao 0.000GB
local 0.000GB
test 0.000GB
dba1:PRIMARY> use db
switched to db db
dba1:PRIMARY> show tables
te
dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("637e295dc7f5fcd867772ca5"), "name" : "name", "age" : "age" }
{ "_id" : ObjectId("637e295dc7f5fcd867772ca6"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("637e295dc7f5fcd867772ca7"), "name" : "gao", "age" : 11 }
下载到本地即可
[root@localhost mongo_clusetr]# cd backup/
[root@localhost backup]# ls
log.csv log.json
[root@localhost backup]# sz log.csv
mongodump能够在mongdb运行时进行备份,它的工作原理是对运行的MongoDB做查询,然后将所有查到的文档写入磁盘。
但是存在问题时使用mongodb产生的备份不一定是数据库的实时快照,如果我们在备份时对数据库进行了写入操作,则备份出来的文件可能不完全和 Mongodb 实时数据相等。另外在备份时可能会对其它客户端性能产生不利的影响。
mongodump --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-o:指明到要导出的文件名
-q:指明导出数据的过滤条件
#创建文件目录
[root@localhost mongo_clusetr]# mkdir /data/backup
#备份整个库
[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -o /data/backup/
#查询备份结果
[root@localhost mongo_clusetr]# cd /data/backup/
[root@localhost backup]# ls
admin db gao test
为了防止备份数据过大,MongoDB是支持备份压缩的
mongodb/bin/mongodump --port 28017 -o /data/backup/ --gzip
和备份全库的命令是差不多的
[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -d db -o /data
[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -d db -o /data --gzip
删除数据库实验恢复操作
已经删除db库
ba1:PRIMARY> show dbs
dba1:PRIMARY> use db
dba1:PRIMARY> db.dropDatabase()
[root@localhost mongo_clusetr]# mongodb/bin/mongorestore --port 28017 -d db -o /data/db/
恢复成功
dba1:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
db 0.000GB
gao 0.000GB
local 0.000GB
test 0.000GB
也可以使用命令后面加–dorp
删除原有数据再次恢复
不过不建议这么使用恢复
[root@localhost mongo_clusetr]# mongodb/bin/mongorestore --port 28017 -d db /data/backup/db/ -dorp