Replication
UnknownError:獲取開始時間戳的最後一個 oplog 條目時出錯:find 命令尚未實現
我有 2 個 mongoDB。一個作為 PRIMARY 執行,它的版本是 3.0.13。另一個在副本集中作為 SECONDARY,它的版本是 3.0.11。複製在這一點上完美執行。
我想添加第三個 mongoDB,空數據文件夾,它的版本是 3.4.5。
使用 mongo 客戶端我可以訪問 PRIMARY 和 SECONDARY,從 PRIMARY 我可以訪問第三個 mongoDB,從 SECONDARY 我也可以訪問第三個 mongoDB。
在主伺服器中,我執行
rs.add("server3:27017")
,命令 rs.status() 以狀態 STARTUP2 顯示這第三台伺服器。但是過了一會兒我得到了這個錯誤2017-07-25T09:24:52.159+0000 I REPL [replication-0] Initial sync attempt finishing up. 2017-07-25T09:24:52.159+0000 I REPL [replication-0] Initial Sync Attempt Statistics: { failedInitialSyncAttempts: 0, maxFailedInitialSyncAttempts: 10, initialSyncStart: new Date(1500974688699), initialSyncAttempts: [] } 2017-07-25T09:24:52.159+0000 E REPL [replication-0] Initial sync attempt failed -- attempts left: 9 cause: UnknownError: error while getting last oplog entry for begin timestamp: find command not yet implemented
當剩下的嘗試次數達到 0 時,守護程序就會死掉。
2017-07-25T09:25:03.887+0000 F REPL [replication-0] The maximum number of retries have been exhausted for initial sync. 2017-07-25T09:25:03.899+0000 E REPL [replication-1] Initial sync failed, shutting down now. Restart the server to attempt a new initial sync. 2017-07-25T09:25:03.899+0000 I - [replication-1] Fatal assertion 40088 UnknownError: error while getting last oplog entry for begin timestamp: find command not yet implemented at src/mongo/db/repl/replication_coordinator_impl.cpp 635 2017-07-25T09:25:03.899+0000 I - [replication-1]
***在 fassert() 失敗後中止
這是什麼意思
find command not yet implemented
?讓這第三台伺服器加入副本集的任何解決方法?
您不能將 MongoDB 3.4.x 成員添加到 MongoDB 3.0.x 副本集。
混合版本之間的複制僅支持相鄰的 MongoDB 主要版本(例如,3.0 和 3.2 或 3.2 和 3.4),即便如此,通常也僅用於臨時用於滾動升級。
這個 find 命令尚未實現是什麼意思?
該
find
命令是在 MongoDB 3.2 生產版本系列中引入的,MongoDB 3.4 複製期望該命令可用。讓這第三台伺服器加入副本集的任何解決方法?
安裝 MongoDB 3.0 或 3.2 以與現有的 MongoDB 3.0 副本集成員兼容。如果您使用 MongoDB 3.2 添加新成員,我建議您將其他副本集成員升級到相同的發布版本。
有關更多資訊,請參閱: