免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

MongoDB中的數(shù)據(jù)復(fù)制到底是怎么實現(xiàn)的

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)MongoDB中的數(shù)據(jù)復(fù)制到底是怎么實現(xiàn)的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了汕頭免費建站歡迎大家使用!

數(shù)據(jù)同步方式

MongoDB中的復(fù)制功能主要是使用操作日志oplog.rs來實現(xiàn)的,oplog.rs包含了主節(jié)點的每一次寫操作,oplog.rs是主節(jié)點中l(wèi)ocal數(shù)據(jù)庫的一個固定集合,我們可以通過如下命令查看到:

use local
show tables

如下:

MongoDB中的數(shù)據(jù)復(fù)制到底是怎么實現(xiàn)的  

備份節(jié)點通過查詢這個集合就知道要復(fù)制哪些數(shù)據(jù),同時,每一個備份節(jié)點也都維護著自己的oplog.rs,自己的oplog.rs則用來記錄每一次從主節(jié)點復(fù)制數(shù)據(jù)的操作,如此,每一個備份節(jié)點都可以再作為數(shù)據(jù)源提供給其他成員使用,如果某一個備份節(jié)點在使用的過程中掛掉了,那么當(dāng)它重啟之后,會自動從oplog.rs的最后一個操作開始同步。

上文我們也已經(jīng)說過oplog.rs是一個固定集合,我們可以通過db.getCollection('oplog.rs').stats()這個命令來查看這個固定集合的屬性,包括集合大小等,執(zhí)行部分結(jié)果如下:

{
    "ns" : "local.oplog.rs",
    "size" : 18170305,
    "count" : 177443,
    "avgObjSize" : 102,
    "storageSize" : 5902336,
    "capped" : true,
    "max" : -1,
    "maxSize" : 1038090240,
    "sleepCount" : 0,
    "sleepMS" : 0,
}

既然是固定集合,它里邊能夠保存的數(shù)據(jù)大小就是有限的。通常,oplog.rs使用空間的增長速度與系統(tǒng)處理處理寫請求的速率近乎相同,比如主節(jié)點每分鐘處理了1KB的寫入請求,那么oplog.rs也可能會在一分鐘內(nèi)寫入1KB條操作日志,但是如果主節(jié)點執(zhí)行了批量刪除的命令,比如下面這種:

db.c1.deleteMany({x:{$type:1}})

此時每一個受影響的文檔都會產(chǎn)生一條oplog中的日志,這個時候oplog.rs中的日志會快速增加。

成員狀態(tài)

到目前為止我們了解到的成員狀態(tài)有兩種,一個是PRIMARY,還有一個是SECONDDARY,成員狀態(tài)的獲取需要靠心跳來維護,副本集中的每一個成員每隔兩秒就會向其他成員發(fā)送一個心跳請求,用來檢查成員的狀態(tài),成員的狀態(tài)主要有如下幾種:

STARTUP

副本集中的成員剛剛啟動時處于這個狀態(tài)下,此時,MongoDB會去加載成員的副本集配置,配置加載成功之后,就進入到STARTUP2的狀態(tài)。

STARTUP2

整個初始化同步過程都處于這個狀態(tài)。

RECOVERING

這個狀態(tài)是由STARTUP2狀態(tài)來的,此時成員運轉(zhuǎn)正常,但是此時還不能處理讀取請求。

ARBITER

這是仲裁者所處的狀態(tài)。

DOWN

當(dāng)一個原本運行正常的成員無法訪問到時,該成員就處于DOWN的狀態(tài)。

UNKNOWN

如果一個成員無法到達其他任何成員,該成員就處于UNKNOWN狀態(tài),比如我們利用rs.add()方法添加一個不存在的成員,這個成員的狀態(tài)就是UNKNOWN。

REMOVED

成員被從副本集中移除時就變成這個狀態(tài)。

ROLLBACK

如果成員正在進行數(shù)據(jù)回滾,它就處于ROLLBACK狀態(tài),回滾結(jié)束后會轉(zhuǎn)換為RECOVERING狀態(tài)。

FATAL

當(dāng)一個成員發(fā)生了不可挽回的錯誤時,且不再嘗試恢復(fù)正常的話,就處于這個狀態(tài)。

主節(jié)點轉(zhuǎn)備份節(jié)點

通過如下命令可以讓主節(jié)點轉(zhuǎn)為備份節(jié)點:

rs.stepDown()

主節(jié)點轉(zhuǎn)為備份節(jié)點之后會有新的主節(jié)點被選舉出來,可以通過rs.status()來查看新的主節(jié)點。

rs.status()方法

前面我們已經(jīng)多次使用過rs.status()方法,rs.status()方法會列出每個備份節(jié)點的含義,我們來看看這些參數(shù)的含義,先來列出一個rs.status()方法的返回值樣例:

{
"members" : [
    {
        "_id" : 1,
        "name" : "192.168.248.135:27017",
        "health" : 1,
        "state" : 2,
        "stateStr" : "SECONDARY",
        "uptime" : 241,
        "optime" : {
                "ts" : Timestamp(1509881297, 1),
                "t" : NumberLong(16)
        },
        "optimeDurable" : {
                "ts" : Timestamp(1509881297, 1),
                "t" : NumberLong(16)
        },
        "optimeDate" : ISODate("2017-11-05T11:28:17Z"),
        "optimeDurableDate" : ISODate("2017-11-05T11:28:17Z"),
        "lastHeartbeat" : ISODate("2017-11-05T11:28:18.073Z"),
        "lastHeartbeatRecv" : ISODate("2017-11-05T11:28:18.769Z"),
        "pingMs" : NumberLong(0),
        "syncingTo" : "192.168.248.136:27017",
        "configVersion" : 15
    },
    {
        "_id" : 3,
        "name" : "192.168.248.136:27017",
        "health" : 1,
        "state" : 1,
        "stateStr" : "PRIMARY",
        "uptime" : 250,
        "optime" : {
                "ts" : Timestamp(1509881297, 1),
                "t" : NumberLong(16)
        },
        "optimeDate" : ISODate("2017-11-05T11:28:17Z"),
        "electionTime" : Timestamp(1509881276, 1),
        "electionDate" : ISODate("2017-11-05T11:27:56Z"),
        "configVersion" : 15,
        "self" : true
    }
]
}

1.stateStr用來描述當(dāng)前節(jié)點的狀態(tài)。
2.uptime表示從成員可達到現(xiàn)在所經(jīng)歷的時間。
3.optimeDate表示每個成員的oplog中最后一個操作發(fā)生的時間。
4.lastHeartbeat表示當(dāng)前服務(wù)器最后一次收到其他成員心跳的時間。
5.pingMs表示心跳從當(dāng)前服務(wù)器到達某個成員所花費的平均時間。
6.syncingTo表示同步的數(shù)據(jù)源。
7.health表示該服務(wù)器是否可達,1表示可達,0表示不可達。

復(fù)制鏈問題

數(shù)據(jù)復(fù)制時可以從主節(jié)點直接復(fù)制,也可以從備份節(jié)點開始復(fù)制,從備份節(jié)點復(fù)制可以形成復(fù)制鏈,如果想禁止復(fù)制鏈,即所有的數(shù)據(jù)都從主節(jié)點復(fù)制,可以通過chainingAllowed屬性來設(shè)置,具體步驟如下:

config=rs.config()
config.settings.chainingAllowed=false
rs.reconfig(config)

上述就是小編為大家分享的MongoDB中的數(shù)據(jù)復(fù)制到底是怎么實現(xiàn)的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞名稱:MongoDB中的數(shù)據(jù)復(fù)制到底是怎么實現(xiàn)的
本文地址:http://newbst.com/article16/jhccdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣做網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站排名、網(wǎng)站設(shè)計、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化