问题描述:
MongoDB启动时报下列错误
[root@MongoDB ~]# mongo
MongoDB shell version: 2.6.1
connecting to: test
2014-05-25T18:47:24.021+0800 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2014-05-25T18:47:24.022+0800 Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146
exception: connect failed
原因分析:造成此错误的原因可能是因为,保存数据库目录所在的物理存储区域已经没有空间了,所以导致数据库故障。数据的存放目录在在启动mongod时自己指定的 --dbpath /home/mongo_db
问题的解决方法:
1、要想弄清楚出现该问题的原因,必须首先了解,mongo的数据存储机制:
详见链接:http://blog.csdn.net/djy37010/article/details/68942379
2、在了解完mongo的数据存储机制后,就要针对上述问题,找出解决办法:
开发环境有大量测试的 增加/删除/修改 操作, 长期以来会导致数据文件非常大,但 实际存储数据并不是很多.
进入mongo,通过db.stats( )即可查看各个数据项所占用的空间大小。
如下图所示就是所占用的磁盘空间:
这些文件会占用大量的磁盘空间,而实际的数据实际上是很少的(注,该文件夹的数据不能随便删除,否则会导致数据库中的数据异常)。
解决办法:
注,无效的解决办法:删除许多开发测试数据后(db.collection.remove()),数据文件显然是不会变小的,至于为什么,请阅读:mongo的数据存储机制(见上).
(1)、dump到本机&restore:
(mongo的安装路径)/bin/mongodump --db dbname --host 127.0.0.1(本机) --port=27017
dump的结果是把数据dump到本地:/bin/dump/dbname/目录下。
如下图所示:
关闭mongodb
cd /data/mongodb/(启动mongod时利用--dbpath所指定的路径,就是为了存放数据库的各种数据)
rm db_name.*
启动mongodb;启动后登陆mongo 确认原来的mongo库已被删除(正常情况下show dbs已经看不到原来的数据库)
use db_name;
(mongo的安装路径)/bin/mongorestore --db dbname --host=127.0.0.1 --port=27017 dump/dbname/
重启mongod:nohup ~/.jumbo/bin/mongod --dbpath — > ~/.jumbo/bin/log &
登录mongo:mongo --host= --port=--
(2)、远程dump&restore:
(mongo的安装路径)/bin/mongodump --db dbname --host=--- (需要被dump的数据所在的主机的ip) --port=27017
dump的结果是把数据从远程主机dump到本地:/bin/dump/dbname/目录下。
如下图所示:
关闭mongodb
cd /data/mongodb/(启动mongod时利用--dbpath所指定的路径,就是为了存放数据库的各种数据)
rm db_name.*
启动mongod;启动后登陆mongo 确认原来的mongo库已被删除(正常情况下show dbs已经看不到原来的数据库)
use db_name;
(mongo的安装路径)/bin/mongorestore --db dbname --host=127.0.0.1 --port=27017 dump/dbname/
重启mongod:nohup ~/.jumbo/bin/mongod --dbpath — > ~/.jumbo/bin/log &
登录mongo:mongo --host= --port=--