簡體   English   中英

我是否可以強制副本集PRIMARY識別mongodb中新重新同步的SECONDARY成員的運行時間?

[英]Can I force a replica set PRIMARY to recognize the optime of a newly re-synced SECONDARY member in mongodb?

最近,我有一個副本集成員在幾天內不同步。 使用重新同步非常陳舊的副本集成員”指令,我在輔助計算機上停止了mongod ,清除了數據目錄,重新啟動了該過程,然后將計算機重新同步至主計算機。

一切工作正常,或者看起來。 記錄表明同步正常。 最終,它顯示為已完成,從而在輔助計算機上產生以下rs.status()輸出:

# The secondary machine's status for itself and its primary:
{
    "_id" : 0,
    "name" : "myprimary:myport",
    "health" : 1,
    "state" : 1,
    "stateStr" : "PRIMARY",
    "uptime" : 497,
    "optime" : {
        "t" : 1347562257000,
        "i" : 1
    },
    "optimeDate" : ISODate("2012-09-13T18:50:57Z"),
    "lastHeartbeat" : ISODate("2012-09-13T19:00:34Z"),
    "pingMs" : 3
    },
{
    "_id" : 2,
    "name" : "mysecondary:myport",
    "health" : 1,
    "state" : 2,
    "stateStr" : "SECONDARY",
    "optime" : {
        "t" : 1347562257000,
        "i" : 1
    },
    "optimeDate" : ISODate("2012-09-13T18:50:57Z"),
    "self" : true
}

正如預期的那樣,這些機器是同步的,並共享一個optime值。 但是主要的機器是另一回事。 它仍然顯示不同步的輔助節點,即使自重新同步完成以來主要節點的高級操作時間也是如此。

# The primary machine's status for itself and its secondary:
{
    "_id" : 0,
    "name" : "myprimary:myport",
    "health" : 1,
    "state" : 1,
    "stateStr" : "PRIMARY",
    "uptime" : 497,
    "optime" : {
        "t" : 1347562257000,
        "i" : 1
    },
    "optimeDate" : ISODate("2012-09-13T18:50:57Z"),
    "self" : true
    },
{
    "_id" : 2,
    "name" : "mysecondary:myport",
    "health" : 1,
    "state" : 2,
    "stateStr" : "SECONDARY",
    "optime" : {
        "t" : 1347103757000,
        "i" : 1
    },
    "optimeDate" : ISODate("2012-09-08T11:29:17Z"),
    "lastHeartbeat" : ISODate("2012-09-11T17:27:06Z"),
    "pingMs" : 3
}

我想念什么? 起初我以為“等一下”,但是已經快一個小時了,數據庫在那段時間里已經插入了。 我可以強制主節點對心跳進行心跳檢查嗎,還是需要再次重新同步它們?

我可以在主數據庫上找到的唯一真正的奇怪之處是:

PRIMARY> use local;
PRIMARY> db.slaves.find()
{ "_id" : ObjectId("4f675b909d8e143a90055864"), "host" : "<hostIP>", "ns" : "local.oplog.rs", "syncedTo" : { "t" : 1347395837000, "i" : 1 } }
{ "_id" : ObjectId("50522761212b77e9637ad541"), "host" : "<hostIP>", "ns" : "local.oplog.rs", "syncedTo" : { "t" : 1347562257000, "i" : 1 } }

這些是相同的主機(有問題的輔助計算機)。 我的理解是,這應該顯示一個條目,但是在不更好地了解其跟蹤內容和更新方式的情況下,我猶豫不決。

嘗試關閉輔助數據庫,刪除主數據庫的db.slaves集合上的兩個條目,然后重新啟動輔助數據庫,可能是一個好主意。

數據文件是否證實機器是同步的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM