mongodb备份与恢复

介绍

mongodb 有两组命令可以进行备份恢复的操作分别是:

备份:mongodump

恢复:mongorestore

备份:mongoexport

恢复:   mongoimport

Mongodump可以backup整个数据库,而mongoexport要对每个collection进行操作,最主要的区别也是选择的标准是mongoexport输出的JSON比Mongodump的BSON可读性更高,进而可以直接对JSON文件进行操作然后还原数据(BSON转换JSON存在潜在兼容问题)。

方法1

备份命令使用方法:

#mongoexport –port 27017 -u root -p QjdChina41 -d accountdb -c outorder_document -o XXX.dat –authenticationDatabase admin

名词介绍

-d 数据库名

-c集合名

-o输出名

–authenticationDatabase 认证的数据库

mongodb导入

#./mongoimport –host=127.0.0.1 -d accountdb -c outorder_document –file XXX.dat

-d accountdb -c outorder_document

备份

#mongodump -uroot -pQjdChina41 –db=proxy -o backup –authenticationDatabase admin

恢复

#./mongorestore -uroot -proot –db=test2 /tmp/backup/proxy/ –authenticationDatabase admin

上述使用的root帐号需要提前建立好并且备份需要读的权限,恢复需要读写的权限

首先需要创建dba帐号用于管理admin库的users管理

testrs:PRIMARY> db.createUser({

… user:”dba”,

… pwd:”dba”,

… roles:[ {role:”userAdminAnyDatabase”, db: “admin” } ]})

之后建立超级管理员的用户创建之前需要db.auth(”dba”,’dba”)认证通过之后才可以创建root帐号

testrs:PRIMARY> db.createUser({

… user:”root”,

… pwd:”root”,

… roles:[{ role:”root”,db:”admin” }]})

方法2

MongoDB 4.0.13 备份(mongodump)和恢复(mongorestore)指定数据库

数据的备份和恢复是很重要的。今天就简单说一下在Ubuntu16.04系统下,MongoDB 4.0.13版本中,如何进行MongoDB数据库的备份和恢复,

步骤一:查看一下当前MongoDB中的所有数据

cd ~
mongo
show dbs;

在这里插入图片描述

步骤二:备份指定数据库(备份520byteBlog这个数据库)

#mongodump -h 127.0.0.1:27017 -d 520byteBlog -o /home/520byteBlog

在这里插入图片描述

步骤三:为快速测试,先将MongoDB中的520byteBlog数据库删除

在这里插入图片描述

步骤四:恢复指定数据库(恢复520byteBlog这个数据库)

#mongorestore -d 520byteBlog --drop /home/520byteBlog/520byteBlog

在这里插入图片描述

步骤五:查看是否恢复成功

在这里插入图片描述

还有一种命令:将指定表导入到某个数据库中

将dumall-users这个表导入到db_demo数据库中(如果db_demo不存在,可以在mongo中使用use db_demo进行创建数据库),表名为users。
其中/var/www/html/vue_bussiness/Bussiness181/resource/dumall-users为dumall-users表的存放路径

#mongoimport -d db_demo -c users  --file /var/www/html/vue_bussiness/Bussiness181/resource/dumall-users

在这里插入图片描述

方法3

ubuntu完美卸载和安装Mongodb数据库+自启动+远程连接

步骤一:备份数据库(备份之前mongodb中的数据库,我备份的是520byteBlog数据库)

没有备份的话,参考我的这篇文章吧:MongoDB 4.0.13 备份(mongodump)和恢复(mongorestore)指定数据库

步骤二:如果之前装过mongodb数据库,要卸载掉之前的数据库。

2.1:停止mongod服务sudo service mongod stop
在这里插入图片描述
删掉所有的mongod安装包sudo apt-get purge mongodb-org*
在这里插入图片描述
2.2:删除数据文件和日志文件的目录

sudo rm -r /var/log/mongodb 
sudo rm -r /var/lib/mongodb

在这里插入图片描述

步骤三:服务器上安装mongodb数据库

3.1:导入MongoDB的公钥

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

在这里插入图片描述
3.2:创建MongoDB的列表文件

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

在这里插入图片描述
3.4:刷新包数据库
sudo apt-get update
在这里插入图片描述
3.5:安装MongoDB的包

sudo apt-get install mongodb-org -y

在这里插入图片描述
【核心注意点】在/lib/systemd/system下,用systemctl工具启动MongoDB,然后检查MongoDB的状态:

cd /lib/systemd/system
sudo systemctl start mongod
sudo systemctl status mongod

【强烈注意】:
执行sudo systemctl start mongod命令后,如果没有报Failed to start mongod.service: Unit mongod.service not found.的错误的话,请直接跳到 自启动mongodb步骤,否则还是按下面的方法老老实实的先解决问题,否则远程无法连接mongodb数据库。
大大大大大大大大坑:注意不是mongodb.service,而是mongod.service
在这里插入图片描述
执行sudo systemctl status mongod,查看mongod的状态,报了如下截图的错误
在这里插入图片描述
3.6:解决办法:取消被屏蔽的mongod.service

#sudo systemctl unmask mongod
#sudo service mongod start
#sudo systemctl status mongod

在这里插入图片描述
3.7:自启动mongodb

sudo systemctl enable mongod

在这里插入图片描述
打开MongoDB shell中

mongo

在这里插入图片描述

步骤四 开启ubuntun上的mongodb数据库的远程访问

输入sudo vim /etc/mongod.conf,
在这里插入图片描述
然后将bindIp: 127.0.0.1改成bindIp: 0.0.0.0 .修改完之后,:wq保存退出
在这里插入图片描述
最后,执行sudo service mongod restart该命令即可。(相关命令sudo service mongod stop,sudo service mongod start)
在这里插入图片描述

步骤四:恢复数据库(恢复之前mongodb中的数据库,我恢复的是520byteBlog数据库)

参考我的这篇文章吧:MongoDB 4.0.13 备份(mongodump)和恢复(mongorestore)指定数据库

步骤五:

本地连接方式1:使用终端进行连接sudo mongo 149.129.100.132:27017
在这里插入图片描述
本地连接方式2:使用Navicat连接(可视化)
在这里插入图片描述
在这里插入图片描述

扩展

mongodb未正常关闭,运行mongodb报Error: couldn’t connect to server 127.0.0.1:27017的解决办法

电脑未正常关机,导致mongodb也未正常关闭。重新启动电脑后,再次运行sudo ./mongo提示如下问题。

MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
2019-09-03T08:57:47.198+0800 E QUERY    [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:344:17
@(connect):2:6
exception: connect failed

问题具体描述:

步骤一、首先进入cd /usr/local/mongodb/bin目录
在这里插入图片描述
步骤二、执行sudo ./mongo命令提示如下错误内容
在这里插入图片描述

解决办法(在/usr/local/mongodb/bin路径下的目录上操作)

步骤一:指定数据库目录为/data/db

 sudo ./mongod  -dbpath /data/db/

在这里插入图片描述
步骤二:重新开启终端,依次执行cd /usr/local/mongodb/bin和sudo ./mongo命令。解决了。
在这里插入图片描述

参考链接 :
mongodb备份与恢复 :https://blog.csdn.net/qq_22543991/article/details/82386705

MongoDB 4.0.13 备份(mongodump)和恢复(mongorestore)指定数据库 :https://www.jianshu.com/p/b674f91edbbb

mongodb未正常关闭,运行mongodb报Error: couldn’t connect to server 127.0.0.1:27017的解决办法 :https://www.jianshu.com/p/28d27510638a

ubuntu完美卸载和安装Mongodb数据库+自启动+远程连接 :https://www.jianshu.com/p/5869d036f9c6

Linux下MongoDB安装和配置详解 :https://www.jianshu.com/p/0ca5d28e2b3a

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值