溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

MongoDB Replica Set排錯(cuò)

發(fā)布時(shí)間:2020-05-30 19:59:24 來(lái)源:網(wǎng)絡(luò) 閱讀:1259 作者:自由linux 欄目:MongoDB數(shù)據(jù)庫(kù)

1.檢查Replica Set的狀態(tài)

使用db.runCommand({"replSetGetStatus" : 1});或者rs.status();


2.檢查復(fù)制延遲時(shí)間

source:   m1.example.net:30001
    syncedTo: Tue Oct 02 2012 11:33:40 GMT-0400 (EDT)
        = 7475 secs ago (2.08hrs)source:   m2.example.net:30002
    syncedTo: Tue Oct 02 2012 11:33:40 GMT-0400 (EDT)
        = 7475 secs ago (2.08hrs)

復(fù)制延遲的可能原因有:

網(wǎng)絡(luò)延遲

     可以使用ping和traceroute命令探測(cè)網(wǎng)絡(luò)狀況

磁盤(pán)吞吐量

     如果Secondary的磁盤(pán)不能像Primary的磁盤(pán)那樣快速將數(shù)據(jù)刷新到磁盤(pán)上,將不能和Primary保持同步更新??梢允褂胕ostat或者vmstat檢查磁盤(pán)使用狀況


并發(fā)量

     在某些情況下,如果Primary上長(zhǎng)期有操作,那么可能會(huì)阻斷Secondary的復(fù)制操作。可以考慮write concern 。再則就是查看是否有慢查詢(xún)。

Appropriate Write Concern        

  • Replica Acknowledge Write Concern

  • Replica Set Write Concern



3.所有成員間的連接測(cè)試

 Replica Set之間的成員需要能夠相互連通,檢查防火墻設(shè)置。


4.重啟多個(gè)Secondar的Socket Exceptions問(wèn)題

當(dāng)重啟Replica Set中的多個(gè)成員時(shí),確??梢赃x出一個(gè)Primary。如果在維護(hù)的過(guò)程中程序出現(xiàn)socket連接錯(cuò)誤,可以檢查T(mén)CP的keepalive設(shè)置。

cat /proc/sys/net/ipv4/tcp_keepalive_time

Linux下默認(rèn)設(shè)置tcp_keepalive_time為7200秒,即兩個(gè)小時(shí)??梢詫⑺械?a title="MongoDB" target="_blank" href="http://www.kemok4.com/mongodb">MongoDB實(shí)例所在的服務(wù)器的這個(gè)值設(shè)置成300秒。

echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time

這種設(shè)置重啟后將消失,需要重新修改。可以直接修改/etc/sysctl.conf然后執(zhí)行sysctl -p



5.檢查Oplog的大小

oplog越大,能夠接受得延遲就越大。

使用db.printReplicationInfo();查看oplog的大小

 db.printReplicationInfo();
configured oplog size:   50278.6203125MB
log length start to end: 143109secs (39.75hrs)
oplog first event time:  Wed Mar 18 2015 00:36:53 GMT+0800 (CST)
oplog last event time:   Thu Mar 19 2015 16:22:02 GMT+0800 (CST)
now:                     Thu Mar 19 2015 17:32:42 GMT+0800 (CST)

如果重新設(shè)置oplog的大小需要將所有的成員都設(shè)置成為大小一樣


6.Oplog Entry Timestamp Error

如果日志中出現(xiàn)如下報(bào)錯(cuò)

replSet error fatal couldn't query the local local.oplog.rs collection.  Terminating mongod after 30 seconds.
<timestamp> [rsStart] bad replSet oplog entry?



參考資料:

http://docs.mongodb.org/v2.4/tutorial/troubleshoot-replica-sets/

http://john88wang.blog.51cto.com/2165294/1564543

http://docs.mongodb.org/v2.4/faq/diagnostics/#faq-keepalive



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI