mongodb error creating initial database config information 问题处理

本文记录了一次MongoDB Shard集群写入失败的问题排查过程。主要问题是由于集群成员配置不一致导致无法正常工作,最终通过导出数据、重启并重新配置集群、再导入数据的方式解决了问题。

 


开发同事说应用里面mongodb写入报错,自己进服务器查看,报错信息如下:
[mongodb@azure_d1_dbm1_3_11 ~]$ /usr/local/mongodb-linux-x86_64-3.0.3/bin/mongo localhost:30000/admin
MongoDB shell version: 3.0.3
connecting to: localhost:30000/admin
mongos> 
mongos> db.foo_test.insert({x:1});
2016-06-22T17:26:17.427+0800 E QUERY    Error: Error: error: {
"$err" : "error creating initial database config information :: caused by :: can't find a shard to put new db on",
"code" : 10185
}
    at Error (<anonymous>)
    at DBCollection.insert (src/mongo/shell/collection.js:260:23)
    at (shell):1:13 at src/mongo/shell/collection.js:260
mongos> 




查看集群状态
[mongodb@azure_d1_dbm1_3_11 ~]$ /usr/local/mongodb-linux-x86_64-3.0.3/bin/mongo localhost:30000/admin
MongoDB shell version: 3.0.3
connecting to: localhost:30000/admin
mongos> db.runCommand({listshards : 1 });
{ "shards" : [ ], "ok" : 1 }
mongos> 


看到这里发现集群里面没有成员,所以尝试手动添加成员试试:
mongos> 
mongos> db.runCommand( { addshard : "shard1/10.249.3.11:27017,10.249.3.12:27017,10.249.3.11:27037"});
{
"ok" : 0,
"errmsg" : "mongos specified a different config database string : stored : 10.249.3.12:20000,10.249.3.11:20000,10.249.3.11:20003 vs given : 10.249.3.12:20000,10.249.3.11:20000,10.249.3.11:20002"
}
mongos> 


看到添加失败,添加的配置和原来的config配置不符合,只能说明是在部署后,config混乱了或者部署失败了。所以最快的解决方案就是:
(1)先导出所有数据
(2)重新启动,搭建mongodb shareding
(3)然后再导入备份好的数据

在启动 MongoDB 时遇到错误 `Error opening config file: Is a directory`,这通常表明 MongoDB 试图读取一个配置文件,但指定的路径实际上是一个目录而非文件。此问题可能由以下几种情况引起: 1. **配置文件路径错误**:在启动 MongoDB 时,使用了 `-f` 或 `--config` 参数指定配置文件路径,但该路径指向了一个目录而不是具体的文件。例如,命令 `mongod -f ../config/mongod.conf` 中的 `../config/mongod.conf` 应该是一个有效的配置文件,而不是一个目录[^2]。 2. **配置文件名拼写错误**:如果路径中的文件名拼写错误,也可能导致 MongoDB 无法找到实际的配置文件,并且尝试访问一个目录。例如,如果 `mongod.conf` 被误写为 `mongod/`,则会引发此错误。 3. **权限问题**:虽然此错误通常不涉及权限问题,但如果 MongoDB 无法访问目标路径中的文件或目录,也可能会出现类似的错误信息。 ### 解决方法 - **检查配置文件路径**:确保在启动命令中使用的配置文件路径是一个文件而不是目录。可以通过 `ls -l` 命令来验证路径是否正确,例如: ```bash ls -l ../config/mongod.conf ``` 如果输出显示这是一个目录,则需要更正路径指向正确的配置文件。 - **确认文件存在**:确保指定的配置文件确实存在,并且文件名拼写正确。可以使用 `find` 命令来查找文件,例如: ```bash find ../config -name mongod.conf ``` - **检查配置文件权限**:确保 MongoDB 进程有权限读取配置文件。可以使用 `chmod` 和 `chown` 命令来调整文件权限和所有者,例如: ```bash chmod 644 ../config/mongod.conf chown mongodb:mongodb ../config/mongod.conf ``` - **查看 MongoDB 日志**:如果问题仍然存在,可以查看 MongoDB 的日志文件以获取更多详细的错误信息,这有助于进一步诊断问题所在。日志文件通常位于 MongoDB 的数据目录中,可以通过配置文件中的 `logPath` 参数找到具体位置[^1]。 - **使用绝对路径**:有时相对路径可能导致问题,尝试使用绝对路径来指定配置文件,例如: ```bash mongod -f /absolute/path/to/mongod.conf ``` 通过以上步骤,应该能够解决 MongoDB 启动时遇到的配置文件打开错误问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值