mongodb 有两组命令可以进行备份恢复的操作分别是:
备份:mongodump
恢复:mongorestore
备份:mongoexport
恢复: mongoimport
Mongodump可以backup整个数据库,而mongoexport要对每个collection进行操作,最主要的区别也是选择的标准是mongoexport输出的JSON比Mongodump的BSON可读性更高,进而可以直接对JSON文件进行操作然后还原数据(BSON转换JSON存在潜在兼容问题)。
备份命令使用方法:
#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” }
… ]
… }
… )
数据的备份和恢复是很重要的。今天就简单说一下在Ubuntu16.04系统下,MongoDB 4.0.13版本中,如何进行MongoDB数据库的备份和恢复,
cd ~
mongo
show dbs;
#mongodump -h 127.0.0.1:27017 -d 520byteBlog -o /home/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
没有备份的话,参考我的这篇文章吧:MongoDB 4.0.13 备份(mongodump)和恢复(mongorestore)指定数据库
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
3.1:导入MongoDB的公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
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
sudo systemctl enable mongod
mongo
输入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 4.0.13 备份(mongodump)和恢复(mongorestore)指定数据库
本地连接方式1:使用终端进行连接sudo mongo 149.129.100.132:27017
本地连接方式2:使用Navicat连接(可视化)
电脑未正常关机,导致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命令提示如下错误内容
步骤一:指定数据库目录为/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