侧边栏壁纸
博主头像
★街角晚灯★ 博主等级

博观而约取 厚积而薄发

  • 累计撰写 468 篇文章
  • 累计创建 185 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

分布式文档存储数据库之MongoDB备份还原恢复

WinJay
2023-09-27 / 0 评论 / 0 点赞 / 94 阅读 / 0 字 / 正在检测是否收录...

分布式文档存储数据库之MongoDB备份还原恢复

image-20230927101115358

mongoexport

导出json/csv结构化数据

mongoexport命令导出的只有数据,不包括索引,mongoexport参数说明:

  • -h:主机ip或域名 (默认localhost)
  • –port:mongodb使用端口 (默认27107)
  • -u:认证用户名 (当需要认证时用)
  • -p:认证密码 (当需要认证时用)
  • -d:指定导出的库名
  • -c:指定导出的表名
  • -f:指定导出的列名
  • -q:查询条件,例如:’{sn:{“$lte”:100}}’
  • -o:保存导出数据文件位置
  • –csv:指定导出csv格式 (便于和传统数据库交换数据),默认导出的json格式
# 导出json数据
mongoexport -h 192.168.8.200 --port 27017 -u vison -p 123456 -d test -c stu -f sn,name,email -q '{sn:{"$lte":100}}' -o /home/vison/src/test.stu.json

# 导出csv数据
mongoexport -h 192.168.8.200 --port 27017 -u vison -p 123456 -d test -c stu -f sn,name,email -q '{sn:{"$lte":100}}' --csv -o /home/vison/src/test.stu.csv

导入json/csv结构化数据

mongoimport命令导入的只有数据,不包括索引,mongoimport参数说明:

  • -h:主机ip或域名 (默认localhost)
  • –port:mongodb使用端口 (默认27107)
  • -u:认证用户名 (当需要认证时用)
  • -p:认证密码 (当需要认证时用)
  • -d:指定导入的库名
  • -c:指定导入的表名(不存在会自己创建)
  • –type:csv/json(默认json)
  • –headline:当导入csv文件时,需要跳过第一行列名
  • –file:导入数据文件的位置
# 导入json数据
mongoimport -h 192.168.8.200 --port 27017 -u vison -p 123456 -d test -c stu_json --type json --file /home/vison/src/test.stu.json

# 导入csv数据
mongoimport -h 192.168.8.200 --port 27017 -u vison -p 123456 -d test -c stu_csv --type csv --headerline --file /home/vison/src/test.stu.csv

# 注:老版本需要指定-fields参数

mongodump

导出二进制数据

mongodump导出数据是包括索引的,mongodump的参数说明:

  • -h:主机ip或域名 (默认localhost)
  • –port:mongodb使用端口 (默认27107)
  • -u:认证用户名 (当需要认证时用)
  • -p:认证密码 (当需要认证时用)
  • -d:指定导出的库名
  • -c:指定导出的表名 (可选)
  • -q:查询条件(可选),例如:’{sn:{“$lte”:100}}’
  • -o:保存导出数据文件位置(默认是导出到mongo下的dump目录)
  • –gzip:导出并压缩

示例:

mongodump -h 192.168.8.200 –port 27017 -u vison -p 123456 -d test –gzip -o /home/vison/src/mongoDump

注:可以写脚本每天凌晨访问少的时候备份一次数据

导入二进制数据

mongorestore导入数据是包括索引的,mongorestore的参数说明:

  • -h:主机ip或域名 (默认localhost)
  • –port:mongodb使用端口 (默认27107)
  • -u:认证用户名 (当需要认证时用)
  • -p:认证密码 (当需要认证时用)
  • -d:指定导出的库名
  • -c:指定导出的表名 (可选)
  • –dir:保存导入数据文件位置
  • –gzip:导出并压缩

示例:

mongorestore -h 192.168.8.200 –port 27017 -u vison -p 123456 -d test –gzip –dir /home/vison/src/mongoDump/test

1.进入容器

docker exec -it <你的MongodDB容器名> /bin/bash

2.容器中执行

mongodump -h 127.0.0.1 --port 27017 -u=用户名 -p=密码 -d test -o /dump
参数作用
-hhost
--port端口
-d指定数据库
-o指定备份到哪个目录,不指定直接备份到根目录的/dump文件夹
-u用户名
-p密码

系统备份成功会在/home/dump目录下自动生成一个数据库名的文件夹/test,里面是全部Collection备份的json文件.

3.容器中执行

tar -czvf test.tar.gz /dump/test

4.从容器复制到宿主

docker cp <你的MongodDB容器名>:/dump/test.tar.gz /home

5.从宿主机到容器

  • 进入docker mongodb容器:docker exec -it mymongo /bin/sh

  • 在docker容器新建mongodb数据要导入的目录,mkdir -p /opt/mongodbBack/

  • docker cp linux备份mongodb的数据文件(不是文件夹) mymongo(容器名称或id):/opt/mongodbBack/

6.还原备份

亦可参考MongoDB的备份与恢复

进入docker mongodb容器:docker exec -it mymongo /bin/sh

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

// --drop:先删除所有的记录,然后恢复.【drop慎用】

docker exec -it <containerName>/<containerId> mongorestore -h IP:port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径

# 执行命令恢复  

docker exec -it mymongo mongorestore -h 127.0.0.1:27017 -u admin -p admin123456 -d admin --dir /data/backup/admin
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区