中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

配置MongoDB復制集

發布時間:2020-03-03 06:21:04 來源:網絡 閱讀:4715 作者:cchenyz 欄目:MongoDB數據庫

什么是復制集?

復制集是額外的數據副本,是跨多個服務器同步數據的過程,復制集提供了冗余并增加了數據可用性,通過復制集可以對硬件故障和中斷的服務進行恢復。
復制集的優勢如下:

  • 讓數據更安全
  • 高數據可用性(24*7)
  • 災難恢復
  • 無停機維護(如備份、索引重建、故障轉移)
  • 讀縮放(額外的副本讀取)
  • 副本集對應用程序是透明的

復制集工作原理

MongoDB的復制集至少需要兩個節點。其中一個是主節點(Primary),負責處理客戶端的請求,其余的都是從節點(Secondary),負責復制主節點上的數據。
MongoDB各個節點常見的搭配方式為:一主一從或一主多從。主節點記錄其上的所有操作到oplog中,從節點定期輪詢主節點獲取這些操作,從而保證從節點的數據與主節點一致。
客戶端在主節點寫入數據,在從節點讀取數據,主節點與從節點進行數據交互保障數據的一致性。如果其中一個節點出現故障,其他節點馬上會將業務接過來而無須停機操作。
復制集特點如下:

  • N個節點的群集
  • 任何節點可作為主節點
  • 所有寫入操作都在主節點上
  • 自動故障轉移
  • 自動恢復

MongoDB復制集部署

創建多實例

如何創建多實例,在我之前的博客中已經寫過,可以參考Yum安裝MongoDB及數據庫管理每個實例創建時都應該先創建數據文件目錄(mongo)和日志文件(mongod.log),同時在修改配置文件時要注意修改使用不同的端口號在做復制集時,我們要多修改一個參數,replication的參數值,并保證多個實例的該參數值都保持一致根據項目要求,需創建額外三個實例,加上原有的一個實例,一共四個實例。
我在做實驗的時候發現,MongoDB中對配置文件的格式也有嚴格要求,在對replication參數值進行修改時要特別注意

replication:
  replSetName: chenrs      //該行內容需在行首空出兩個空格,不空格或者多空格都會導致服務啟動失敗

配置MongoDB復制集
項目示意圖如下:
配置MongoDB復制集

初始化配置復制集

創建復制集

我們先配置包含三個節點的復制集,多出來的一個節點,會在接下來再做一個節點添加的操作

mongo
chen={"_id":"chenrs","members":[{"_id":0,"host":"172.16.10.27:27017"},{"_id":1,"host":"172.16.10.27:27018"},{"_id":2,"host":"172.16.10.27:27019"}]}

配置MongoDB復制集

初始化復制集

在初始化復制集時,要確保從節點沒有數據,不然在初始化以后會造成從節點服務器的數據丟失。

rs.initiate(chen)

配置MongoDB復制集

查看復制集中各節點狀態
chenrs:SECONDARY> rs.status()
{
    "set" : "chenrs",
    "date" : ISODate("2018-07-14T14:40:20.756Z"),
         ···     //省略部分內容
    "members" : [
        {
            "_id" : 0,
            "name" : "172.16.10.27:27017",
            "health" : 1,             //健康值為1,代表該節點處于運行良好狀態
            "state" : 1,               //1代表主
            "stateStr" : "PRIMARY",   //處于peimary狀態
         ···     //省略部分內容
        },
        {
            "_id" : 1,
            "name" : "172.16.10.27:27018",
            "health" : 1,
            "state" : 2,              //2代表從
            "stateStr" : "SECONDARY", //處于secondary狀態
        ···     //省略部分內容
        },
        {
            "_id" : 2,
            "name" : "172.16.10.27:27019",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
        ···     //省略部分內容
        }
}
chenrs:PRIMARY>            //此時節點狀態已經發生轉變

節點管理(在primary上做)

添加節點
rs.add("172.16.10.27:27020")

配置MongoDB復制集
配置MongoDB復制集

刪除節點
rs.remove("172.16.10.27:27020")

故障轉移切換

模擬主節點損壞
ps aux | grep  mongod     //查詢本地的節點的進程號
kill -9 40882             //殺死主節點進程

配置MongoDB復制集

查看節點狀態
chenrs:SECONDARY> rs.status()
{
    "set" : "chenrs",
    "date" : ISODate("2018-07-14T15:21:21.426Z"),
    "myState" : 2,
    "term" : NumberLong(2),
    "syncingTo" : "172.16.10.27:27019",
    "syncSourceHost" : "172.16.10.27:27019",
    "syncSourceId" : 2,
           ···   //省略部分內容
    "members" : [
        {
            "_id" : 0,
            "name" : "172.16.10.27:27017",
            "health" : 0,             //健康值為0,處于停機狀態
            "state" : 8,
            "stateStr" : "(not reachable/healthy)",
           ···   //省略部分內容
        },
        {
            "_id" : 1,
            "name" : "172.16.10.27:27018",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            ···   //省略部分內容
        },
        {
            "_id" : 2,
            "name" : "172.16.10.27:27019",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            ···    //省略部分內容
        }
}

主動切換主從狀態(在primary上做)

rs.freeze(30)      //暫停30s不參與選舉
rs.stepDown(60,30)   //交出主節點位置,維持從節點狀態不少于60秒,等待30秒使主節點和從節點日志同步

配置MongoDB復制集

MongoDB復制選舉原理及復制集管理
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安图县| 贡觉县| 彭泽县| 科尔| 滦南县| 寿阳县| 浦城县| 齐河县| 沙雅县| 青岛市| 肥西县| 肃南| 涪陵区| 平阳县| 麻栗坡县| 上饶市| 长武县| 鱼台县| 鄯善县| 通山县| 新和县| 旺苍县| 台南市| 和平区| 佛教| 历史| 扶风县| 阿拉尔市| 玉屏| 班戈县| 沂水县| 乌鲁木齐县| 曲沃县| 林周县| 宁阳县| 沧州市| 綦江县| 丹东市| 大渡口区| 乡宁县| 江西省|