<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                一)理解MongoDB復制集 二)案例 第一個:以三節點為例 操作系統;centos7.3 節點: node1: 10.2.13.187 node2: 10.2.13.186 node3: 10.2.13.185 mongodb版本: Mongodb3.6.3 1)第一步,在所有節點上安裝mongodb3.6.3,腳本如下 ~~~ [root@node2 scripts]# cat install_mongodb.sh #!/bin/bash # M_VER=3.6 M_INSTALL_VER=3.6.3 PORT=27017 BIND_IP=$(ifconfig eth0|grep inet|grep -v inet6|awk '{print $2}') function yum_install_mongodb(){ cd /etc/yum.repos.d if [ ! -f mongodb-org-${M_VER}.repo ];then cat >>mongodb-org-${M_VER}.repo <<EOF [mongodb-org-${M_VER}] name = MongoDB Repository baseurl = https://repo.mongodb.org/yum/redhat/7Server/mongodb-org/${M_VER}/x86_64/ gpgcheck = 0 enabled = 1 EOF fi yum install -y mongodb-org-${M_INSTALL_VER} mongodb-org-server-${M_INSTALL_VER} mongodb-org-shell-${M_INSTALL_VER} mongodb-org-mongos-${M_INSTALL_VER} mongodb-org-tools-${M_INSTALL_VER} cd /etc/ && [ ! -f mongod.conf.ori ] && cp /etc/mongod.conf{,.ori} #修改配置文件 sed -i "s@bindIp: 127.0.0.1@bindIp: ${BIND_IP}@g" /etc/mongod.conf #啟動mongod服務 systemctl start mongod if [ "`ss -tunl|grep ${PORT}|cut -d: -f2|awk '{print $1}'`" == "${PORT}" ];then echo "mongod start successful" else echo "mongod start fail" fi } main(){ yum_install_mongodb } main ~~~ 2)配置mongod.conf 參數 replication: oplogSizeMB : <int> replSetName : <string> secondaryIndexPrefetch : <string> enableMajorityReadConcern : <boolean> ##在3.6中不推薦使用 replSetResizeOplog使您可以動態調整oplog的大小而不必重新啟動mongod進程。 replication.secondaryIndexPrefetch僅適用于mmapv1 存儲引擎 * 在node1上操作 replication: oplogSizeMB: 3072 replSetName: repl1 secondaryIndexPrefetch: _id_only 解釋: replSet:定義一個復制集的名稱,假如三個服務器的mongodb.conf中都需要加入replSet的指定,它們都屬于repl1復制集(replSetName) replIndexPrefetch:指定索引預獲取行為,[none|_id_only|all] ( secondaryIndexPrefetch) oplogSize:用于復制操作的大小(以MB為單位)日志。默認值是磁盤空間的5% (oplogSizeMB) 啟動mongod服務 [root@node1 ~]# systemctl start mongod * 在node2和node3上操作 [root@node3 ~]# vim /etc/mongod.conf replication: oplogSizeMB: 3072 replSetName: repl1 secondaryIndexPrefetch: _id_only 然后重啟mongod服務 [root@node3 ~]# systemctl restart mongod 3)配置復制集 在node1上操作 ~~~ [root@node1 ~]# mongo 10.2.13.187:27017 MongoDB shell version v3.6.3 connecting to: mongodb://10.2.13.187:27017/test MongoDB server version: 3.6.3 Server has startup warnings: 2018-03-13T10:29:01.155+0800 I STORAGE [initandlisten] 2018-03-13T10:29:01.155+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 2018-03-13T10:29:01.155+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem 2018-03-13T10:29:05.989+0800 I CONTROL [initandlisten] 2018-03-13T10:29:05.989+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2018-03-13T10:29:05.989+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2018-03-13T10:29:05.989+0800 I CONTROL [initandlisten] > rs. rs.add( rs.isMaster( rs.addArb( rs.printReplicationInfo( rs.apply( rs.printSlaveReplicationInfo( rs.bind( rs.propertyIsEnumerable( rs.call( rs.prototype rs.compareOpTimes( rs.reconfig( rs.conf( rs.remove( 當前配置 rs.config( rs.slaveOk( rs.constructor rs.status( rs.debug rs.stepDown( rs.freeze( rs.syncFrom( rs.hasOwnProperty( rs.toLocaleString( rs.help( rs.toString( rs.initiate( rs.valueOf( 初始化 ~~~ * 先初始化并查看狀態 ~~~ > rs.initiate() 初始化 { "info2" : "no configuration specified. Using a default configuration for the set", "me" : "10.2.13.187:27017", "ok" : 1, "operationTime" : Timestamp(1520908730, 1), "$clusterTime" : { "clusterTime" : Timestamp(1520908730, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } repl1:PRIMARY> rs.status() --查看副本集的狀態 { "set" : "repl1", "date" : ISODate("2018-03-13T02:39:47.584Z"), "myState" : 1, "term" : NumberLong(1), "heartbeatIntervalMillis" : NumberLong(2000), "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1520908782, 1), "t" : NumberLong(1) }, "readConcernMajorityOpTime" : { "ts" : Timestamp(1520908782, 1), "t" : NumberLong(1) }, "appliedOpTime" : { "ts" : Timestamp(1520908782, 1), "t" : NumberLong(1) }, "durableOpTime" : { "ts" : Timestamp(1520908782, 1), "t" : NumberLong(1) } }, "members" : [ 顯示副本集成員信息 { "_id" : 0, 節點標識 "name" : "10.2.13.187:27017", 節點名稱 "health" : 1, 節點健康狀態 "state" : 1, 有沒有狀態信息 "stateStr" : "PRIMARY", 當前節點狀態 "uptime" : 646, 運行狀態 "optime" : { "ts" : Timestamp(1520908782, 1), "t" : NumberLong(1) }, --oplog中最近一次最后一次oplog操作的時間戳 "optimeDate" : ISODate("2018-03-13T02:39:42Z"), --oplog中最近一次最后一次oplog操作的時間 "infoMessage" : "could not find member to sync from", "electionTime" : Timestamp(1520908730, 2), 選舉時間戳 "electionDate" : ISODate("2018-03-13T02:38:50Z"),選舉日期 "configVersion" : 1, "self" : true } ], "ok" : 1, "operationTime" : Timestamp(1520908782, 1), "$clusterTime" : { "clusterTime" : Timestamp(1520908782, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } ~~~ ~~~ repl1:PRIMARY> rs.add("10.2.13.186:27017") 添加節點 { "ok" : 1, "operationTime" : Timestamp(1520909511, 1), "$clusterTime" : { "clusterTime" : Timestamp(1520909511, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } repl1:PRIMARY> rs.status() { "set" : "repl1", "date" : ISODate("2018-03-13T02:51:59.822Z"), "myState" : 1, "term" : NumberLong(1), "heartbeatIntervalMillis" : NumberLong(2000), "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1520909507, 1), "t" : NumberLong(1) }, "appliedOpTime" : { "ts" : Timestamp(1520909511, 1), "t" : NumberLong(1) }, "durableOpTime" : { "ts" : Timestamp(1520909511, 1), "t" : NumberLong(1) } }, "members" : [ { "_id" : 0, "name" : "10.2.13.187:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 1378, "optime" : { "ts" : Timestamp(1520909511, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2018-03-13T02:51:51Z"), "electionTime" : Timestamp(1520908730, 2), "electionDate" : ISODate("2018-03-13T02:38:50Z"), "configVersion" : 2, "self" : true }, { "_id" : 1, "name" : "10.2.13.186:27017", "health" : 1, "state" : 0, "stateStr" : "STARTUP", 追趕主節點的階段,一旦追趕成功就會顯示"SECONDARY",如 "stateStr" : "SECONDARY", "uptime" : 7, "optime" : { "ts" : Timestamp(0, 0), "t" : NumberLong(-1) }, "optimeDurable" : { "ts" : Timestamp(0, 0), "t" : NumberLong(-1) }, "optimeDate" : ISODate("1970-01-01T00:00:00Z"), "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"), "lastHeartbeat" : ISODate("2018-03-13T02:51:57.837Z"), "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"), "pingMs" : NumberLong(1), "configVersion" : -2 } ], "ok" : 1, "operationTime" : Timestamp(1520909511, 1), "$clusterTime" : { "clusterTime" : Timestamp(1520909511, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } 一旦狀態變成"SECONDARY",我們可以登錄node2查看 [root@node2 ~]# mongo 10.2.13.186:27017 MongoDB shell version v3.6.3 connecting to: mongodb://10.2.13.186:27017/test MongoDB server version: 3.6.3 Server has startup warnings: 2018-03-13T10:32:03.222+0800 I CONTROL [initandlisten] 2018-03-13T10:32:03.222+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2018-03-13T10:32:03.222+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2018-03-13T10:32:03.222+0800 I CONTROL [initandlisten] 2018-03-13T10:32:03.223+0800 I CONTROL [initandlisten] 2018-03-13T10:32:03.223+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2018-03-13T10:32:03.223+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2018-03-13T10:32:03.223+0800 I CONTROL [initandlisten] 2018-03-13T10:32:03.223+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2018-03-13T10:32:03.223+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2018-03-13T10:32:03.223+0800 I CONTROL [initandlisten] repl1:SECONDARY> ~~~ 錯誤提示1(在從節點上) ~~~ repl1:SECONDARY> show dbs; 2018-03-13T11:01:43.988+0800 E QUERY [thread1] Error: listDatabases failed:{ "operationTime" : Timestamp(1520910097, 1), "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435, "codeName" : "NotMasterNoSlaveOk", "$clusterTime" : { "clusterTime" : Timestamp(1520910097, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 Mongo.prototype.getDBs@src/mongo/shell/mongo.js:65:1 shellHelper.show@src/mongo/shell/utils.js:816:19 shellHelper@src/mongo/shell/utils.js:706:15 @(shellhelp2):1:1 ~~~ 因為從節點默認是不允許讀寫的,解決這個問題,有兩種方式 在從節點上執行rs.slaveOk() 或者在主節點上執行db.getMongo().setSlaveOk() repl1:SECONDARY> rs.slaveOk() repl1:SECONDARY> show dbs admin 0.000GB config 0.000GB local 0.000GB person 0.000GB 在主機節點上操作rs.conf ~~~ rs.conf() { "_id" : "repl1", "version" : 3, "protocolVersion" : NumberLong(1), "members" : [ { "_id" : 0, "host" : "10.2.13.187:27017", "arbiterOnly" : false, 當前節點是不是仲裁節點 "buildIndexes" : true, "hidden" : false,當前節點是否為隱藏節點 "priority" : 1, 當前節點的優先級 "tags" : { }, "slaveDelay" : NumberLong(0), 當前節點是否為延遲復制的 "votes" : 1------是否有選票的資格 }, { "_id" : 1, "host" : "10.2.13.186:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 2, "host" : "10.2.13.185:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : -1, "catchUpTakeoverDelayMillis" : 30000, "getLastErrorModes" : { }, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 }, "replicaSetId" : ObjectId("5aa739baf02836af4dbcb3c5") } } ~~~ 模擬主節點故障: repl1:PRIMARY> rs.stepDown() repl1:SECONDARY> 此時第三個節點就變成主的 repl1:SECONDARY> repl1:PRIMARY> * 調整屬性 1)調整該節點的優先級為2,使其成為主節點(在主節點上操作) repl1:PRIMARY> cfg=rs.conf() repl1:PRIMARY> cfg.members[0].priority=2 repl1:PRIMARY> rs.reconfig(cfg) 然后就發現當前主節點變成 repl1:SECONDARY> 然后優先級為2的節點成為primary節點咯 repl1:PRIMARY> 2)添加仲裁節點 推薦使用 repl1:PRIMARY> rs.addArb("10.2.13.185:27017") 直接添加仲裁節點 把已有的某個節點改成沖裁節點 repl1:PRIMARY> cfg=rs.conf() repl1:PRIMARY> cfg.members[2].arbiterOnly=true true repl1:PRIMARY> rs.reconfig(cfg) 如果沒有成功就執行如下操作 ~~~ repl1:PRIMARY> rs.remove("10.2.13.185:27017") { "ok" : 1, "operationTime" : Timestamp(1520913161, 1), "$clusterTime" : { "clusterTime" : Timestamp(1520913161, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } repl1:PRIMARY> rs.addArb("10.2.13.185:27017") { "ok" : 1, "operationTime" : Timestamp(1520913184, 1), "$clusterTime" : { "clusterTime" : Timestamp(1520913184, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } 使用rs.conf()查看 { "_id" : 2, "host" : "10.2.13.185:27017", "arbiterOnly" : true, "buildIndexes" : true, ~~~ 3)查看各從節點是否落后與主節點多少 repl1:PRIMARY> rs.printSlaveReplicationInfo() source: 10.2.13.186:27017 syncedTo: Tue Mar 13 2018 11:54:23 GMT+0800 (CST) 0 secs (0 hrs) behind the primary source: 10.2.13.185:27017 no replication info, yet. State: (not reachable/healthy) 4) 配置節點成為延遲節點(在主節點上配置) cfg = rs.conf() cfg.members[2].priority = 0 cfg.members[2].hidden = true cfg.members[2].slaveDelay = 3600 rs.reconfig(cfg) * 副本集的維護 1)更改oplog大小 ~~~ repl1:SECONDARY> db.oplog.rs.stats().maxSize NumberLong("3221225472") repl1:SECONDARY> db.adminCommand({replSetResizeOplog:1,size:2048}) { "ok" : 1, "operationTime" : Timestamp(1520915223, 1), "$clusterTime" : { "clusterTime" : Timestamp(1520915223, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } repl1:SECONDARY> db.oplog.rs.stats().maxSize NumberLong("2147483648") ~~~ 2)
                  <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>

                              哎呀哎呀视频在线观看