mongodb进行整库备份与恢复,以及对单表的备份恢复,单表支持json格式和csv(excel)格式

MongoDB整库备份之mongodump

如果是docker部署的mongo先docker exec -it mongo bash登录mongo容器,然后在bin文件夹下,运行指令

这个demo是在mongodump中导出单表,但是其实单表导出还是下面的mongoexport更加适合,mongodump还是更适合整库备份

mongodump之单表
mongodump -h 127.0.0.1:27017 -d xwms -u XXX -p XXX -c "interface_log_body" -q '{"expireAt":{$gte:ISODate("2020-02-16T00:00:00.000Z")}}' -o /mongodumpData/2020_1_17_interface_body.dump

  • -d代表哪个mongo数据库
  • -c代表哪个collection集合
  • -q 后面的代表删选某一段时间的数据,也可以些其他的mongo筛选语句
  • -o 代表导出到容器的哪个路径下

导出完成后还需要把文件从docker容器中复制到宿主机的本地路径下

docker cp a765d1f37a57:/mongodumpData/mongodumpData/ /home/

a765d1f37a57 代表容器id
/mongodumpData/mongodumpData/ 容器中备份数据的存放路径 这个路径是针对于容器的不是宿主机
/home/ 代表宿主机的本地路径

mongodump之整库(整库备份推荐)

语法:
mongodump -h dbhost -d dbname -o dbdirectory
参数说明:

  • -h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
  • -d: 需要备份的数据库实例,例如:test
  • -o: 备份的数据存放位置,例如:/home/mongodump/,当然该目录需要提前建立,这个目录里面存放该数据库实例的备份数据,如果想增量恢复的话还是只能单表恢复,可以参考下面的单表恢复

demo

sudo rm -rf /home/momgodump/
sudo mkdir -p /home/momgodump
sudo mongodump -h 192.168.17.129:27017 -d itcast -o /home/mongodump/

MongoDB整库恢复之mongorestore

语法:
mongorestore -h dbhost -d dbname --dir dbdirectory

参数解释:

  • -h: MongoDB所在服务器地址
  • -d: 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
  • –dir: 备份数据所在位置,例如:/home/mongodump/itcast/
  • –drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,也就是会冲掉原先备份之后新增的数据.

demo
mongorestore -h 192.168.17.129:27017 -d itcast_restore --dir /home/mongodump/itcast/

MongoDB单表数据导入与导出之mongoexport

实际在使用的使用遇到了mongo的过期时间expireAt的坑,在实际筛选的时候要往前推一天。比如你要找interFace里的id的创建时间是2020.1.15号的对应的日志body,你需要找expireAt >= 2020.2.14(mongo默认的过期时间是1个月)

demo如下

mongoexport -d xwms -c interface_log_body -q '{expireAt : {$gte: ISODate("2020-02-14T00:00:00.000Z")}}' -o /mongodumpData/2020_interface_log_body.json -u root -p tingtong.123

导出之后还要把数据从docker容器中copy到宿主机本地

docker cp a765d1f37a57:/mongodumpData/2020_interface_log_body.json /home/

针对于单张表备份还是mongoexport方便

语法:
mongoexport -d dbname -c collectionname -o file --type json/csv -f field
参数说明:

  • -d :数据库名
  • -c :collection名
  • -o :输出的文件名
  • –type : 输出的格式,默认为json
  • -f :输出的字段,如果-type为csv,则需要加上-f “字段名”

示例:

sudo mongoexport -d mongotest -c users -o /home/python/Desktop/mongoDB/users.json --type json -f "_id,user_id,user_name,age,status"

如果是json格式的,可以不用指明具体字段,默认全部导出,是在docker里运行的话,先登录docker mongo容器,然后直接运行mongoexport对应命令导出内容到容器中,然后docker cp复制出来到宿主机即可

demo
sudo mongoexport -d mongotest -c users -o /home/python/Desktop/mongoDB/users.json --type json

如果数据库有加密码

sudo mongoexport -u userName -p passwd -d mongotest -c users -o /home/python/Desktop/mongoDB/users.json --type json

单表数据导入:mongoimport

语法:
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field

参数说明:

  • -d :数据库名
  • -c :collection名
  • –type :导入的格式默认json
  • -f :导入的字段名
  • –headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
  • –file :要导入的文件

示例:
sudo mongoimport -d mongotest -c users --file /home/mongodump/articles.json --type json

如果是docker 启动的mongo容器
在导入的时候表不存在的话会自动创建,并且是增量恢复,不会冲掉原先的记录
demo
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值