国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MongoDB > 正文

關于單臺MongoDB實例開啟Oplog的過程詳解

2020-03-14 12:49:23
字體:
來源:轉載
供稿:網友

背景

隨著數據的積累,MongoDB中的數據量越來越大,數據分析團隊從數據庫中抽取變化數據(假如依據欄位createdatetime,transdatetime),越來越困難。我們知道MongoDB的副本集有一個數據結構Oplog,里面存儲了Primary節點的所有寫操作(此處的寫操作是指查詢以外的操作,包含 更新、異常等)。其實,數據的抽取完全可以從Oplog中抓取這些操作,然后去重放。

oplog是local庫下的一個固定集合,Secondary就是通過查看Primary 的oplog這個集合來進行復制的。每個節點都有oplog,記錄這從主節點復制過來的信息,這樣每個成員都可以作為同步源給其他節點。

Oplog 可以說是Mongodb Replication的紐帶了。

但是在實際的生產環境中,我們很多MongoDB 數據庫是單實例的,那么我們能否在單實例數據庫上開啟Oplog?

答案是肯定的。

其原理就是,在單實例上配置副本集,如果配置成功了,自然就有了Oplog

配置過程

其實配置的過程比較簡單。

step 1 : 在配置文件中 添加副本集參數(replSet);

step 2 :重啟服務;

step 3:在local數據庫或admin數據庫執行初始化副本集的腳本,rs.initiate()。

注意事項

1. 在配置文件中增加副本集參數(replSet=??),MongoDB實例重啟,第一次登入,執行其他命令時(例如:show dbs),會提示錯誤,錯誤信息如下,

{"ok" : 0,"errmsg" : "not master and slaveOk=false","code" : 13435,"codeName" : "NotMasterNoSlaveOk"}

此時一定要執行初始化的命令:

rs.initiate({ _id: "副本集名稱", members: [{_id:0,host:"ServerIP:MongoDBPort"}]})

MongoDB,開啟,Oplog

2 . 初始化時,請指明 Server信息和端口信息,否則初始化時可能報錯,報錯信息如下

"errmsg" : "No host described in new configuration 1 for replica set replwms maps to this node",

MongoDB,開啟,Oplog

指定IP 和 端口,副本集名稱,例如執行以下命令,OK

MongoDB,開啟,Oplog

3 . 副本集初始化可以在admin中執行,不僅僅可以在local數據庫中執行【真正的副本集建立多是在admin庫中執行】。

而不像有些文章中要求的那樣 :You just need to issuers.initiate()on thelocaldatabase:

4. 初始完,副本集中唯一的節點,可能短時間顯示為SECONDARY或OTHER。一般而言,稍等一會,就會自然恢復為primary,無需人工干預。

MongoDB,開啟,Oplog

MongoDB,開啟,Oplog

如果數據庫的數據量不大,并且長時間初始這種過渡狀態(SECONDARY或OTHER),去看實例的日志,也顯示無進展,此時可以考慮重啟服務。

下面案例是我們實際遇到的一個場景,我們是通過重啟服務解決此問題,角色由other重啟轉換為Primary

MongoDB,開啟,Oplog

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑河市| 青铜峡市| 当涂县| 高陵县| 诸暨市| 静乐县| 周至县| 阜新市| 正阳县| 科技| 平舆县| 清新县| 大姚县| 雷波县| 大邑县| 越西县| 徐汇区| 手机| 慈利县| 儋州市| 壶关县| 申扎县| 丰城市| 江永县| 镇原县| 高清| 夏邑县| 涿鹿县| 太仓市| 乌兰浩特市| 宜川县| 那曲县| 枞阳县| 手机| 岳阳县| 甘南县| 广宁县| 永宁县| 闽清县| 积石山| 克山县|