MongoDB数据备份还原,及docker中MongoDB备份还原

一: MongoDB数据备份

在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。

mongodump命令可以通过参数指定导出的数据量级转存的服务器。

1)语法:

mongodump命令脚本语法如下:

mongodump -h dbhost -d dbname -o dbdirectory

参数说明:

-h:MongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,例如:c:datadump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

其他参数参考:
–db:-d 指定导出的数据库
–collection:指定导出的集合
–excludeCollection:指定不导出的集合
–host :-h 远程ip
–username:-u 开启身份验证后,用户的登录名
–password:-p 用户的密码
–out(指定输出目录):-o 如果不使用这个参数,mongodump将输出文件保存在当前工作目录中名为dump的目录中
–archive:导出归档文件,最后只会生成一个文件,注意: archive 与 out 不能一起用
–gzip:压缩归档的数据库文件,文件的后缀名为.gz

–authenticationDatabase <dbname> 指定创建User的数据库;在特定的数据库中创建User,该DB就是User的authentication database。
在连接mongo时,使用参数 –authenticationDatabase,会认证 -u 和 -p 参数指定的账户和密码。如果没有指定验证数据库,mongo使用连接字符串中指定的DB作为验证数据块。

2)示例:

备份本地数据库,账户root,密码123456,test数据库,指定到/dump目录

mongodump -h 127.0.0.1 --port 27017 -u=root -p=123456 -d test -o /dump

如果没有设置账户密码,或者端口都是默认的27017,则可以省略参数。如:

将在终端所在的目录下生成一个指定名称(test.gz)的数据库文件,并压缩

mongodump --archive=test.gz --gzip --db test

二: MongoDB数据还原

mongodb使用 mongorestore 命令来恢复备份的数据。

1)语法:

mongorestore命令脚本语法如下:

mongorestore -h <hostname><:port> -d dbname <path>

参数:
–host <:port>, -h <:port>:
MongoDB所在服务器地址,默认为: localhost:27017

–db , -d :
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

–drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

<path>:
mongorestore 最后的一个参数,设置备份数据所在位置,例如:/home/mongod/backup/test/
你不能同时指定 <path> 和 –dir 选项,–dir也可以设置备份目录。

–dir:
指定备份的目录,你不能同时指定 <path> 和 –dir 选项。

–nsInclude :指定还原的集合,支持通配符(*)
–nsExclude:指定不还原的集合,支持通配符(*)
–nsFrom:修改集合名称,原来集合的名称,支持使用变量
–nsTo:修改集合名称,修改之后集合的名称,支持使用变量

2)示例:

恢复到10.0.0.152:27017,test数据库,恢复数据库备份位置/home/mongod/backup/test/

mongorestore -h 10.0.0.152:27017 -uroot -proot -d test --drop /home/mongod/backup/test/

三: 备份还原

基于docker的MongoDB数据备份还原
例子,此时有一个mongo容器

sudo docker ps
ubuntu@ubuntu:~$ sudo docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS       PORTS        NAMES
645ae5ab17b8   mongo:latest   "docker-entrypoint.s…"   2 hours ago   Up 2 hours   27017/tcp    mongo

方法一:

直接进入docker容器,一步一步还原。

sudo docker exec -it mongo(容器名称) /bin/bash
#进入容器
mongodump --archive=mongo.gz
#直接生成一个名字为mongo.gz的备份文件
exit
#退出容器
sudo docker cp mongo(容器名称):/mongo.gz /backup/
#将容器备份的数据复制到本地/backup/文件夹中

还原一样,步骤复制本地到容器中,进入容器中,还原复制过来的备份文件。

方法二:

一步到位备份:

将 mongo容器中所有数据,备份并按日期命名单个文件,备份至本地/var/backup_test文件夹。

sudo docker exec mongo(容器名称) sh -c 'mongodump --archive' > /var/backup_test/mongo_`date +%F`.gz

还原:

sudo docker exec -i mongo(容器名称) sh -c 'mongorestore --archive' < /var/backup_test/mongo_2023-04-28.gz
© 版权声明
THE END
如果喜欢,可以【点赞】【分享】【收藏】
点赞10赞赏 分享
评论 抢沙发
头像
非注册用户需审核通过后才能查看。友好交流,勿发纯表情,勿恶意灌水!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容