MongoDB常见问题有哪些?一文带你了解怎样处理
发布时间:2021-12-12 09:21:40 所属栏目:教程 来源:互联网
导读:在使用MongoDB过程中,可能会遇到多种问题,例如mongod服务无法正常启动。对此这篇文章就给大家来分享一些MongoDB中常见问题及解决方法,需要的朋友可以了解看看。 1 非正常关闭服务或关机后 mongod服务无法正常启动 在使用中发现mongodb 的服务很容易因为非
在使用MongoDB过程中,可能会遇到多种问题,例如mongod服务无法正常启动。对此这篇文章就给大家来分享一些MongoDB中常见问题及解决方法,需要的朋友可以了解看看。 1 非正常关闭服务或关机后 mongod服务无法正常启动 在使用中发现mongodb 的服务很容易因为非正常关闭而启动不了,不过解决也很容易 删除data目录下的 *.lock文件,再运行下 /mongodb_binpath/mongod -repair -f config文件路径 再启动即可 也可以在/etc/init.d/mongod 服务启动的文件中加入 启动前删除该文件 如下: start() { rm -f /usr/mongodb/data/master/mongod.lock /usr/mongodb/bin/mongod --config /usr/mongodb/config/master.conf } 2、server-side JavaScript execution is disabled 完整信息:JavaScript execution failed: group command failed: { "ok" : 0, "errmsg" : "server-side JavaScript execution is disabled" } 解决方法:mongod.conf 这个配置文件里 noscripting:false 如果true 就是禁止 3、 Decimal转换成BsonValue值异常 BsonValue 暂不支持 Decimal类型,转换前强制转换类型, if (type==typeof(Decimal)) { return Convert.ToDouble(value); } 如果用MongoDB,最好不要用decimal类型,否则在序列化的时候也有问题,可用double 4、MONGO Replica 频繁插入大数据的问题 MONGO Replica 频繁插入大数据的问题,当在复制集中频繁插入大数据时有可能出现 “error RS102 too stale to catch up"出现这个错误的原因是SECONDARY即副节点的复制速度跟不上了,当需要批量频繁向副本集中写入数据时最好先移除副本节点,待插入完后重新同步。 5 Mongo集群没有primary但有secondary时连接不上且不能读数据 #mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读。 shell 1 repset:SECONDARY> db.getMongo().setSlaveOk(); #要在primary上执行 2 rs.slaveOk() 其他客户端 从secondary 读数据 如果应用程序没有设置相应的ReadReference也可能不能进行读取操作 MongoClientSettings set = new MongoClientSettings(); List<MongoServerAddress> servers = new List<MongoServerAddress>(); servers.Add(new MongoServerAddress("192.168.129.129", 37017)); servers.Add(new MongoServerAddress("192.168.129.129", 37018)); servers.Add(new MongoServerAddress("192.168.129.129", 37019)); set.Servers = servers; //设置副本集名称 set.ReplicaSetName = "rs0"; //设置超时时间为3秒 set.ConnectTimeout = new TimeSpan(0, 0, 0, 3, 0); MongoClient client = new MongoClient(set); MongoServer server = client.GetServer(); MongoDatabase db = server.GetDatabase("test"); MongoCollection coll = db.GetCollection("test"); 注:设置驱动的ReadReference也可以通过MongoDB连接字符串配置:mongodb://example1.com,example2.com,example3.com/?readPreference=secondary。通过连接字符串指定的read preference是针对整个连接。 set.ReadPreference = new ReadPreference(ReadPreferenceMode.PrimaryPreferred); 将ReadPreferenceMode设置成Secondary或SecondaryPreferred (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读