mongodb数据的导入导出备份恢复

数据的导出

 

• 语法格式 1

– #mongoexport [--host IP 地址 --port 端口 ]

-d 库名 -c 集合名 -f 字段名 1, 字段名 2

--type=csv

> 目录名 / 文件名 .csv

 

[root@host51 ~]# mongoexport  --help

 

[root@host51 ~]# mkdir /mbak

[root@host51 ~]# mongoexport  --host 192.168.4.51 --port 27051 -d ddsdb -c c2 -f name,school --type=csv > /mbak/c2.csv

2018-08-01T15:47:11.207+0800 connected to: 192.168.4.51:27051

2018-08-01T15:47:11.208+0800 exported 14 records

[root@host51 ~]# cat  /mbak/c2.csv 

name,school

bob,tarena

zhangsan,danei

张三,达外

jack,tarena

lilei,tarena

xiaoqiang,

tom,

tom,

php,

jj,

kk,

,

,

,

 

语法格式 2

– #mongoexport --host IP 地址 --port 端口

-d 库名 -c 集合名 -q ‘{ 条件 }’ -f 字段名 1 ,字段名 2  --type=csv > 目录名 / 文件名 .csv

注意:导出为 csv 格式必须使用 -f 指定字段名列表 !!!

 

[root@host51 ~]# mongoexport  --host 192.168.4.51 --port 27051 -d ddsdb -c c2 --type=json > /mbak/c2.json

2018-08-01T15:51:48.273+0800 connected to: 192.168.4.51:27051

2018-08-01T15:51:48.275+0800 exported 14 records

[root@host51 ~]# cat /mbak/c2.json 

{"_id":{"$oid":"5b61513d32bc8e678acd6f3f"},"name":"bob","school":"tarena"}

{"_id":{"$oid":"5b61519132bc8e678acd6f40"},"name":"zhangsan","school":"danei"}

{"_id":{"$oid":"5b6151b132bc8e678acd6f41"},"name":"张三","school":"达外"}

{"_id":{"$oid":"5b61526b32bc8e678acd6f42"},"name":"jack","school":"tarena","single":false}

{"_id":{"$oid":"5b6152ea32bc8e678acd6f43"},"name":"lilei","school":"tarena","single":false,"pay":null}

{"_id":{"$oid":"5b61553632bc8e678acd6f44"},"name":"xiaoqiang","like":["gril","eat","piao","sleep"]}

{"_id":{"$oid":"5b61559c32bc8e678acd6f45"},"name":"tom","xf":195}

{"_id":{"$oid":"5b6155ef32bc8e678acd6f46"},"name":"tom","xf":{"$numberLong":"4918"}}

{"_id":{"$oid":"5b61571c32bc8e678acd6f47"},"name":"php","code":{"$code":"function (){}"},"like":100000.0}

{"_id":{"$oid":"5b61590132bc8e678acd6f49"},"name":"jj","stu_id":{"$oid":"5b61590132bc8e678acd6f48"},"class":"nsd1804"}

{"_id":{"$oid":"5b6159bd32bc8e678acd6f4a"},"name":"kk","sr":"Wed Aug 01 2018 14:57:01 GMT+0800 (CST)"}

{"_id":{"$oid":"5b615d4e32bc8e678acd6f4b"},"ywzd":{"writer":"dmy","pay":68.0,"vers":"v2"}}

{"_id":{"$oid":"5b615e2d32bc8e678acd6f4c"},"tarena":{"address":"beijing","tell":8.888888e+06,"person":"harry"}}

{"_id":{"$oid":"5b615f4832bc8e678acd6f4d"},"jbname":"shell","rcode":{"$regex":".$","$options":""}}

[root@host51 ~]# 

 

数据导入:

 

[root@host51 ~]# mongoimport  --help

 

语法格式 1

– #mongoimport –host IP 地址 – port 端口   -d 库名  – c 集合名   --type=json       目录名 / 文件名 .json

 

> show dbs

admin   0.000GB

config  0.000GB

ddsdb   0.000GB

local   0.000GB

 

[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c col --type=json  /mbak/c2.json 

2018-08-01T16:22:54.238+0800 connected to: 192.168.4.51:27051

2018-08-01T16:22:54.457+0800 imported 14 documents

 

 

 

[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c stu --type=csv  /mbak/c2.csv 

2018-08-01T16:37:03.316+0800 error validating settings: must specify --fields, --fieldFile or --headerline to import this file type

2018-08-01T16:37:03.316+0800 try 'mongoimport --help' for more information

 

[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c stu  --headerline --type=csv  /mbak/c2.csv 

2018-08-01T16:38:18.720+0800 connected to: 192.168.4.51:27051

2018-08-01T16:38:18.804+0800 imported 14 documents

 

[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c tea -f name,school  --type=csv  /mbak/c2.csv 

2018-08-01T16:40:04.868+0800 connected to: 192.168.4.51:27051

2018-08-01T16:40:05.019+0800 imported 15 documents

 

 

• 语法格式 2

– #mongoimport –host IP 地址 – port 端口

-d 库名 – c 集合名

--type=csv --headerline [--drop] 目录名 / 文件名.csv

 

> db.tea.count()

30

[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c tea -f name,school  --type=csv --drop  /mbak/c2.csv 

2018-08-01T16:41:44.333+0800 connected to: 192.168.4.51:27051

2018-08-01T16:41:44.334+0800 dropping: gamedb.tea

2018-08-01T16:41:44.454+0800 imported 15 documents

 

> db.tea.count()

15

 

练习:

把系统文件(/etc/passwd) 存储到mongodb数据库里的userdb的coluser的集合里

 

> db.coluser.find()

{ "_id" : ObjectId("5b617485df5cbc631e0dc4bc"), "name" : "yaya", "password" : "x", "uid" : 1, "gid" : 1, "comment" : "my gril", "homedir" : "/home/yaya", "shell" : "/bin/bash" }

 

[root@host51 ~]# mongoexport  --host 192.168.4.51 --port 27051 -d userdb -c coluser -f name,password,uid,gid,comment,homedir,shell --type=csv  >  /mbak/coluser.csv

2018-08-01T16:54:08.030+0800 connected to: 192.168.4.51:27051

2018-08-01T16:54:08.032+0800 exported 1 record

[root@host51 ~]# cat  /mbak/coluser.csv 

name,password,uid,gid,comment,homedir,shell

yaya,x,1,1,my gril,/home/yaya,/bin/bash

 

把 /etc/password/弄成/mbak/coluser.csv 一样的文件格式:

[root@host51 ~]# cp /etc/passwd /mbak/

[root@host51 ~]# cd /mbak/

[root@host51 mbak]# ls

c2.csv  c2.json  c3.json  coluser.csv  passwd

[root@host51 mbak]# sed -i 's/:/,/g' passwd 

[root@host51 mbak]# head -2 passwd 

root,x,0,0,root,/root,/bin/bash

bin,x,1,1,bin,/bin,/sbin/nologin

 

[root@host51 mbak]# sed -i '$r passwd' coluser.csv 

[root@host51 mbak]# head  -5 coluser.csv 

name,password,uid,gid,comment,homedir,shell

yaya,x,1,1,my gril,/home/yaya,/bin/bash

root,x,0,0,root,/root,/bin/bash

bin,x,1,1,bin,/bin,/sbin/nologin

 

 

 

把文件导入到库里:

 

[root@host51 mbak]# mongoimport  --host 192.168.4.51 --port 27051 -d userdb -c coluser --headerline --drop --type=csv /mbak/coluser.csv 

2018-08-01T17:08:36.078+0800 connected to: 192.168.4.51:27051

2018-08-01T17:08:36.078+0800 dropping: userdb.coluser

2018-08-01T17:08:36.240+0800 imported 41 documents

 

> show dbs

admin   0.000GB

config  0.000GB

ddsdb   0.000GB

gamedb  0.000GB

local   0.000GB

userdb  0.000GB

> use userdb

switched to db userdb

> show tables

coluser

> db.coluser.find()

{ "_id" : ObjectId("5b6178943dd57015866eb75c"), "name" : "yaya", "password" : "x", "uid" : 1, "gid" : 1, "comment" : "my gril", "homedir" : "/home/yaya", "shell" : "/bin/bash" }

{ "_id" : ObjectId("5b6178943dd57015866eb75d

 

数据备份

• 备份数据所有库到当前目录下的 dump 目录下     //备份所有库所有表

# mongodump [ --host ip 地址 --port 端口 ]

 

[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051

 

[root@host51 mbak]# ls dump/             //在当前目录生成dump目录

admin  ddsdb  gamedb  userdb

 

• 备份时指定备份的库和备份目录

# mongodump [ --host ip 地址 --port 端口 ] -d 数据库名 -c 集合名 -o 目录

                                                                                                       目录无需事先创建 备份时指定即可!!! 

 

[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051  -d gamedb -c col

2018-08-01T17:37:20.674+0800 writing gamedb.col to 

2018-08-01T17:37:20.675+0800 done dumping gamedb.col (14 documents)

[root@host51 mbak]# ls dump/gamedb/

col.bson           col.metadata.json  stu.bson           stu.metadata.json  tea.bson           tea.metadata.json

 

  

[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051  -d gamedb -c stu  /gamedbdir

2018-08-01T17:34:02.924+0800 positional arguments not allowed: [/gamedbdir]

2018-08-01T17:34:02.924+0800 try 'mongodump --help' for more information

[root@host51 mbak]# mkdir  /gamedbdir

[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051  -d gamedb -c stu  /gamedbdir

2018-08-01T17:34:46.646+0800 positional arguments not allowed: [/gamedbdir]

2018-08-01T17:34:46.646+0800 try 'mongodump --help' for more information

 

[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051  -d gamedb -c stu  -o /bake

2018-08-01T17:36:10.018+0800 writing gamedb.stu to 

2018-08-01T17:36:10.020+0800 done dumping gamedb.stu (14 documents)

[root@host51 mbak]# ls  /bake/

gamedb

[root@host51 mbak]#  ls /bake/gamedb/

stu.bson  stu.metadata.json

 

 

    

• 查看 bson 文件内容

#bsondump ./dump/bbs/t1.bson

 

[root@host51 mbak]# bsondump  ./dump/ddsdb/c2.bson 

{"_id":{"$oid":"5b61513d32bc8e678acd6f3f"},"name":"bob","school":"tarena"}

{"_id":{"$oid":"5b61519132bc8e678acd6f40"},"name":"zhangsan","school":"danei"}

{"_id":{"$oid":"5b6151b132bc8e678acd6f41"},"name":"张三","school":"达外"}

{"_id":{"$oid":"5b61526b32bc8e678acd6f42"},"name":"jack","school":"tarena","single":false}

{"_id":{"$oid":"5b6152ea32bc8e678acd6f43"},"name":"lilei","school":"tarena","single":false,"pay":null}

{"_id":{"$oid":"5b61553632bc8e678acd6f44"},"name":"xiaoqiang","like":["gril","eat","piao","sleep"]}

{"_id":{"$oid":"5b61559c32bc8e678acd6f45"},"name":"tom","xf":195}

{"_id":{"$oid":"5b6155ef32bc8e678acd6f46"},"name":"tom","xf":{"$numberLong":"4918"}}

{"_id":{"$oid":"5b61571c32bc8e678acd6f47"},"name":"php","code":{"$code":"function (){}"},"like":100000.0}

{"_id":{"$oid":"5b61590132bc8e678acd6f49"},"name":"jj","stu_id":{"$oid":"5b61590132bc8e678acd6f48"},"class":"nsd1804"}

{"_id":{"$oid":"5b6159bd32bc8e678acd6f4a"},"name":"kk","sr":"Wed Aug 01 2018 14:57:01 GMT+0800 (CST)"}

{"_id":{"$oid":"5b615d4e32bc8e678acd6f4b"},"ywzd":{"writer":"dmy","pay":68.0,"vers":"v2"}}

{"_id":{"$oid":"5b615e2d32bc8e678acd6f4c"},"tarena":{"address":"beijing","tell":8.888888e+06,"person":"harry"}}

{"_id":{"$oid":"5b615f4832bc8e678acd6f4d"},"jbname":"shell","rcode":{"$regex":".$","$options":""}}

2018-08-01T17:41:33.663+0800 14 objects found

 

数据恢复:

• 语法格式

– mongorestore --host IP 地址 --port 端口 -d 数据库名 [ -c 集合名 ] 备份目录名

 

模拟数据丢失:

方法一:

> db.stu.remove({})

WriteResult({ "nRemoved" : 14 })

 

[root@host51 mbak]# mongorestore  --host 192.168.4.51 --port 27051 -d gamedb  -c stu /bake/gamedb/stu.bson 

2018-08-01T17:46:20.073+0800 checking for collection data in /bake/gamedb/stu.bson

2018-08-01T17:46:20.074+0800 reading metadata for gamedb.stu from /bake/gamedb/stu.metadata.json

2018-08-01T17:46:20.075+0800 restoring gamedb.stu from /bake/gamedb/stu.bson

2018-08-01T17:46:20.137+0800 no indexes to restore

2018-08-01T17:46:20.137+0800 finished restoring gamedb.stu (14 documents)

2018-08-01T17:46:20.137+0800 done

 

> db.stu.count()

14

> db.stu.find()

 

方法二:  //重新建立一个新的集合

[root@host51 mbak]# mongorestore  --host 192.168.4.51 --port 27051 -d gamedb  -c regtab  /bake/gamedb/stu.bson 

2018-08-01T17:47:47.238+0800 checking for collection data in /bake/gamedb/stu.bson

2018-08-01T17:47:47.240+0800 reading metadata for gamedb.regtab from /bake/gamedb/stu.metadata.json

2018-08-01T17:47:47.332+0800 restoring gamedb.regtab from /bake/gamedb/stu.bson

2018-08-01T17:47:47.395+0800 no indexes to restore

2018-08-01T17:47:47.395+0800 finished restoring gamedb.regtab (14 documents)

2018-08-01T17:47:47.395+0800 done

 

> show tables

col

regtab

stu

tea

 

方法三: //建立一个新的库和新的集合

[root@host51 mbak]# mongorestore  --host 192.168.4.51 --port 27051 -d buydb  -c regtab   /bake/gamedb/stu.bson 

2018-08-01T17:50:33.832+0800 checking for collection data in /bake/gamedb/stu.bson

2018-08-01T17:50:33.833+0800 reading metadata for buydb.regtab from /bake/gamedb/stu.metadata.json

2018-08-01T17:50:33.926+0800 restoring buydb.regtab from /bake/gamedb/stu.bson

2018-08-01T17:50:33.989+0800 no indexes to restore

2018-08-01T17:50:33.989+0800 finished restoring buydb.regtab (14 documents)

2018-08-01T17:50:33.989+0800 done

 

> use buydb

switched to db buydb

> show tables

regtab

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值