分布式文档存储数据库之MongoDB备份还原恢复
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
参数 | 作用 |
---|---|
-h | host |
--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
评论区