MongoDB維護(hù)文檔的方法是怎樣的,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)公司主營(yíng)陵城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開(kāi)發(fā),陵城h5重慶小程序開(kāi)發(fā)搭建,陵城網(wǎng)站營(yíng)銷推廣歡迎陵城等地區(qū)企業(yè)咨詢
MONGODB的CPU 使用率很高, 數(shù)據(jù)庫(kù)發(fā)生堵塞或者有大量的慢查詢。
mongostat 查看到請(qǐng)求量并不高, 而且發(fā)生的庫(kù)是從庫(kù)。
Db.currentOp() 查看到的會(huì)話非常的多, 這里查找比較麻煩, 我們可以去查看MONGODB的日志, 慢查詢會(huì)打印日志到文件中。
如果找不到MONGODB的日志文件, 可以使用ps –elf | grep mongod 去找到配置文件, 配置文件里會(huì)有相關(guān)的配置。
配置文件中的LOGPATH 參數(shù)是配置日志文件的。
使用tail -100f /data/mongodb/logs/db.log
此查詢需要花30秒的時(shí)間。
此查詢是根據(jù)DATAID查詢的, 連接MONGODB查看此條件是否有索引。
Mongo 127.0.0.1:27017
Use datalog;
Db. user_operate_log.getIndexes() 去獲取此集合的索引。
發(fā)現(xiàn)此集合沒(méi)有關(guān)于DATAID的索引, 因此跟業(yè)務(wù)人員聯(lián)系,要求加索引即可。
db.user_operate_log.ensureIndex({"dataId":1});
在添加索引完成后, 關(guān)于此服務(wù)器的告警全部消失:
sh.enableSharding("dbname")
db.collection_name.createIndex({_id: "hashed"})
因?yàn)槲疫@邊里創(chuàng)建的是HASH分片,所以創(chuàng)建HASH類型的索引即可。
sh.shardCollection( "dbname.collection_name", { "_id": "hashed" } )
sh.status()
介紹: 因前期磁盤(pán)空間未做規(guī)劃,MONGODB的數(shù)據(jù)目錄存放在了根分區(qū),根分區(qū)的空間小而且IO能力跟不上,在后期添加磁盤(pán)后需要對(duì)數(shù)據(jù)進(jìn)行遷移到新磁盤(pán)的操作。
方案:
關(guān)閉備節(jié)點(diǎn)。
Mongo 127.0.0.1:27017
Use admin;
Db.shutdownServer()
遷移數(shù)據(jù)目錄到新的磁盤(pán),并修改配置文件到新的磁盤(pán)路徑。(ps –elf | grep mongo 可獲取到參數(shù)文件的路徑)
Mv /data/mongo /data1/mongo
啟動(dòng)備節(jié)點(diǎn)。
依次將所有備節(jié)點(diǎn)操作完畢。
主庫(kù)降級(jí)成為備庫(kù),讓已經(jīng)切換為的主庫(kù)提供服務(wù)。注: 在這個(gè)過(guò)程中會(huì)有微妙級(jí)的中斷,和業(yè)務(wù)溝通,并無(wú)影響。
主庫(kù)降級(jí)命令連接進(jìn)主庫(kù)后執(zhí)行rs.stepDown()
遷移原主庫(kù)數(shù)據(jù)即可。
在關(guān)庫(kù)重啟后需要使用rs.status()來(lái)確認(rèn)復(fù)制集的正常。
在切換主庫(kù)時(shí)需要關(guān)注業(yè)務(wù)的正常以及復(fù)制集的正常。
關(guān)于mongodb維護(hù)文檔的方法是怎樣的問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。