<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] ## 一 復制集概念 ### A 復制集概述 Mongodb復制集(replica set)由一組Mongod實例(進程)組成,包含一個Primary節點和多個Secondary節點,Mongodb Driver(客戶端)的所有數據都寫入Primary,Secondary通過oplog來同步Primary的數據,保證主從節點數據的一致性; 復制集在完成主從復制的基礎上,通過心跳機制,一旦Primary節點出現宕機,則觸發選舉一個新的主節點,剩下的secondary節點指向新的Primary,時間應該在10-30s內完成感知Primary節點故障,實現高可用數據庫集群 **特點:** * Primary節點是唯一的,但不是固定的 * 由大多數據原則保證數據的一致性 * Secondary節點無法寫入(默認情況下,不使用驅動連接時,也是不能查詢的) * 相對于傳統的主從結構,復制集可以自動容災 ### B 復制集原理 **角色(按是否存儲數據劃分):** * Primary 主節點,由選舉產生,負責客戶端的寫操作,產生oplog日志文件 * Secondary 從節點,負責客戶端的讀操作,提供數據的備份和故障的切換 * Arbiter 仲裁節點,只參與選舉的投票,不會成為primary,也不向Primary同步數據 >若部署了一個2個節點的復制集,1個Primary,1個Secondary,任意節點宕機,復制集將不能提供服務了(無法選出Primary),這時可以給復制集添加一個Arbiter節點,即使有節點宕機,仍能選出Primary **角色(按類型區分):** * Standard(標準) 這種是常規節點,它存儲一份完整的數據副本,參與投票選舉,有可能成為主節點 * Passive(被動) 存儲完整的數據副本,參與投票,不能成為活躍節點 * Arbiter(投票) 仲裁節點只參與投票,不接收復制的數據,也不能成為活躍節點 >每個參與節點(非仲裁者)有個優先權(0-1000),優先權(priority)為0則是被動的,不能成為活躍節點; 優先權不為0的,按照由大到小選出活躍節點,優先值一樣的則看誰的數據比較新 Mongodb 3.0里,復制集成員最多50個,參與Primary選舉投票的成員最多7個 ### C 選舉 每個節點通過優先級定義出節點的類型(標準、被動、投票) 標準節點通過對比自身數據進行選舉出primary節點或者secondary節點 **影響選舉的因素:** 1. 心跳檢測 復制集內成員每隔兩秒向其他成員發送心跳檢測信息,若10秒內無響應,則標記其為不可用 2. 節點數量 在多個節點中,最少保證兩個節點為活躍狀態,如果集群中共三個節點,掛掉兩個節點,那么剩余的節點無論狀態是primary還是處于選舉過程中,都會直接被降權為secondary **觸發選舉的情況:** 1. 初始化狀態 2. 從節點們無法與主節點進行通信 3. 主節點辭職 **主節點辭職的情況:** * 在接收到replSetStepDown命令后 * 在現有的環境中,其他secondary節點的數據落后于本身10s內,且擁有更高優先級 * 當主節點無法與群集中多數節點通信 >當主節點辭職后,主節點將關閉自身所有的連接,避免出現客戶端在從節點進行寫入操作 ## 二 復制集搭建 ### A 配置文件準備 **創建目錄** ```sh mkdir -p /opt/mongodb/2802{0,1,2,3}/{conf,data,log} ``` **創建單個配置文件** ```sh [mongo@noah ~]$ vim /opt/mongodb/28020/conf/mongod.conf systemLog: destination: file path: /opt/mongodb/28020/log/mongodb.log logAppend: true storage: journal: enabled: true dbPath: /opt/mongodb/28020/data directoryPerDB: true wiredTiger: engineConfig: cacheSizeGB: 1 directoryForIndexes: true collectionConfig: blockCompressor: zlib indexConfig: prefixCompression: true processManagement: fork: true net: port: 28020 replication: oplogSizeMB: 2048 replSetName: my_repl ``` **復制配置文件為多份** ```sh cp /opt/mongodb/2802{0,1}/conf/mongod.conf cp /opt/mongodb/2802{0,2}/conf/mongod.conf cp /opt/mongodb/2802{0,3}/conf/mongod.conf ``` **修改配置文件端口** ```sh sed -i 's#28020#28021#g' /opt/mongodb/28021/conf/mongod.conf sed -i 's#28020#28022#g' /opt/mongodb/28022/conf/mongod.conf sed -i 's#28020#28023#g' /opt/mongodb/28023/conf/mongod.conf ``` ### B 配置復制集群 **啟動多個mongodb** ```sh mongod -f /opt/mongodb/28020/conf/mongod.conf mongod -f /opt/mongodb/28021/conf/mongod.conf mongod -f /opt/mongodb/28022/conf/mongod.conf mongod -f /opt/mongodb/28023/conf/mongod.conf ``` **創建復制集群** ```sh mongo --port 28020 config = {_id: 'my_repl', members: [ {_id: 0, host: '192.168.3.241:28020'}, {_id: 1, host: '192.168.3.241:28021'}, {_id: 2, host: '192.168.3.241:28022'}] } rs.initiate(config) ``` **查看復制集狀態:** ```SH rs.status(); //查看整體復制集狀態 rs.isMaster(); // 查看當前是否是主節點 rs.conf(); //查看復制集配置情況 ``` ### C 復制集群修改 **添加刪除節點** ```sh rs.remove("ip:port"); // 刪除一個節點 rs.add("ip:port"); // 新增從節點 rs.addArb("ip:port"); // 新增仲裁節點 ``` **重新配置集群** ```sh config = {_id: 'my_repl', members: [ {_id: 0, host: '192.168.3.241:28020'}, {_id: 1, host: '192.168.3.241:28021'}, {_id: 2, host: '192.168.3.241:28022',"arbiterOnly":true}] } rs.reconfig(config) ``` ## 三 復制集特殊節點 ### A 特殊節點: * arbiter節點 主要負責選主過程中的投票,但是不存儲任何數據,也不提供任何服務 * hidden節點 隱藏節點,不參與選主,也不對外提供服務。 * delay節點 延時節點,數據落后于主庫一段時間,因為數據是延時的,也不應該提供服務或參與選主,所以通常會配合hidden(隱藏) 一般情況下會將delay+hidden一起配合使用 **添加特殊節點的方法** 1. 可以在搭建過程中設置特殊節點 2. 可以通過修改配置的方式將普通從節點設置為特殊節點 需要找到需要改為延遲性同步的數組號,然后修改數據數據 ### B 配置延時節點 查看所有節點的配置 ```sh > rs.conf() "members" : [ { "_id" : 0, --->成員號 "host" : "10.0.0.51:28017", --->節點信息 "arbiterOnly" : false, --->是否為仲裁節點 "buildIndexes" : true, "hidden" : false, --->是否為隱藏節點 "priority" : 1, ---->選主權重 "tags" : { }, "slaveDelay" : NumberLong(0), --->延時的時間 "votes" : 1 } ``` 在線修改配置: ```sh #將所有配置信息定義到一個變量cfg 中 cfg=rs.conf() #從[成員號]對應的成員配置信息,調取某項配置進行修改 cfg.members[3].priority=0 cfg.members[3].hidden=true cfg.members[3].slaveDelay=120 #重新加載配置 rs.reconfig(cfg) ``` 取消以上配置 ```sh cfg=rs.conf() cfg.members[3].priority=1 cfg.members[3].hidden=false cfg.members[3].slaveDelay=0 rs.reconfig(cfg) ``` >注意:如果所有節點,沒有0號節點時,members[號碼],不再是_id值了,要手工數一下成員的位置號(從0開始數) 配置成功后,通過以下命令查詢配置后的屬性 ```sh rs.conf(); ``` ## 四 集群讀寫分離 對于MongoDB來說,主節點一般用于寫數據,從節點用于讀數據,且主節點也并不是固定的(當主節點宕機后會選舉出一個新的主節點),所以在生產環境時客戶端不能直連主節點,要**配置集群節點**: ~~~ <mongo:mongo-client replica-set="ip1:port1,ip2:port2,ip3:port3"> <mongo:client-options read-preference="SECONDARY_PREFERRED"/> </mongo:mongo-client> ~~~ 通過**read-preference**參數控制讀寫分離方式,其類型有以下幾種: * PRIMARY(默認) 讀操作都在主節點,若主節點不可用則報錯。 * PRIMARY\_PREFERRED 首選主節點,若主節點不可用則轉移到其它從節點。 * SECONDARY 讀從節點,不可用則報錯。 * SECONDARY\_PREFERRED(推薦) 首選從節點,若是特殊情況則在主節點讀(但主節點架構)。 * NEAREST 最鄰近主節點。 ## 五 副本集其他操作命令: 1. 查看副本集的配置信息 ```sh admin> rs.config() 或者 admin> rs.conf() ``` 2. 查看副本集各成員的狀態 ```sh admin> rs.status() ``` 3. 副本集角色切換(不要人為隨便操作) ```sh admin> rs.stepDown() 注: admin> rs.freeze(300) //鎖定從,使其不會轉變成主庫 freeze()和stepDown單位都是秒。 ``` 4. 設置副本節點可讀:在副本節點執行 ```sh admin> rs.slaveOk() ``` 5. 查看副本節點(監控主從延時) ```sh admin> rs.printSlaveReplicationInfo() source: 192.168.1.22:27017 syncedTo: Thu May 26 2016 10:28:56 GMT+0800 (CST) 0 secs (0 hrs) behind the primary ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看