下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 數據庫 > DB2 > MongoDB入門到進階筆記:07-Mongo 副本集的搭建 添加 刪除 延時 仲裁 rs.status replSetName

          MongoDB入門到進階筆記:07-Mongo 副本集的搭建 添加 刪除 延時 仲裁 rs.status replSetName

          時間:2024-02-08 11:17作者:下載吧人氣:23

          mongodb單臺服務器
          數據會有丟失的風險
          單臺服務器無法做高可用性
          mongodb副本集能夠預防數據丟失,多臺mongodb數據一致
          mongodb副本集能夠在有問題的時候自動切換

          實戰說明
          使用三臺服務器實戰mongodb副本集,生產環境中建議至少三臺服務器,本次使用三個容器
          docker run –name mongo1 –privileged –ip 172.18.0.10 -p 30122:22 -p 27117:27117 -v /data/docker_data/Mongo1:/data –network=n-mongo -itd centos7 /usr/sbin/init
          docker run –name mongo2 –privileged –ip 172.18.0.11 -p 30222:22 -p 27217:27217 -v /data/docker_data/Mongo2:/data –network=n-mongo -itd centos7 /usr/sbin/init
          docker run –name mongo3 –privileged –ip 172.18.0.12 -p 30322:22 -p 27317:27317 -v /data/docker_data/Mongo3:/data –network=n-mongo -itd centos7 /usr/sbin/init

          [root@localhost ~]# docker ps
          CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
          3dccec9ff0da centos7 “/usr/sbin/init” 4 hours ago Up 6 seconds 0.0.0.0:27317->27317/tcp, 0.0.0.0:30322->22/tcp mongo3
          b48bee1209ef centos7 “/usr/sbin/init” 4 hours ago Up 3 seconds 0.0.0.0:27217->27217/tcp, 0.0.0.0:30222->22/tcp mongo2
          5e7b4039fa6f centos7 “/usr/sbin/init” 4 hours ago Up 4 seconds 0.0.0.0:27117->27117/tcp, 0.0.0.0:30122->22/tcp mongo1

          三臺服務器的ip為:
          172.18.0.10
          172.18.0.11
          172.18.0.12
          集群搭建實戰
          172.18.0.10:27117
          172.18.0.11:27217
          172.18.0.12:27317

          主節點模擬數據
          for(i=1; i<=10000;i++){
          db.myuser.insert( {name:’mytest’+i, age:i} )
          }

          解壓 mongodb
          【mongo1、mongo2、mongo3】
          創建 data logs 目錄

          mongodb副本集配置文件
          mongo1
          [root@685e6baa229d mongodb]# more mongod.cnf
          systemLog:
          destination: file
          logAppend: true
          path: /data/mongodb/logs/mongodb.log
          storage:
          dbPath: /data/mongodb/data
          journal:
          enabled: true
          processManagement:
          fork: true
          net:
          port: 27117
          bindIp: 0.0.0.0
          replication:
          replSetName: replSet
          mongo2
          [root@685e6baa229d mongodb]# more mongod.cnf
          systemLog:
          destination: file
          logAppend: true
          path: /data/mongodb/logs/mongodb.log
          storage:
          dbPath: /data/mongodb/data
          journal:
          enabled: true
          processManagement:
          fork: true
          net:
          port: 27217
          bindIp: 0.0.0.0
          replication:
          replSetName: replSet

          mongo3
          [root@685e6baa229d mongodb]# more mongod.cnf
          systemLog:
          destination: file
          logAppend: true
          path: /data/mongodb/logs/mongodb.log
          storage:
          dbPath: /data/mongodb/data
          journal:
          enabled: true
          processManagement:
          fork: true
          net:
          port: 27317
          bindIp: 0.0.0.0
          replication:
          replSetName: replSet

          啟動三個mongodb服務器
          需要對應更改端口、數據目錄、日志路徑
          【mongo1、mongo2、mongo3】
          mongod -f mongod.cnf

          mongodb副本集的初始化及其狀態查看
          config = { _id:”replSet”, members:[
          {_id:0,host:”172.18.0.10:27117″},
          {_id:1,host:”172.18.0.11:27217″},
          {_id:2,host:”172.18.0.12:27317″}]
          }
          config = { _id:”replSet”, members:[
          … {_id:0,host:”172.18.0.10:27117″},
          … {_id:1,host:”172.18.0.11:27217″},
          … {_id:2,host:”172.18.0.12:27317″}]
          … }
          {
          “_id” : “replSet”,
          “members” : [
          {
          “_id” : 0,
          “host” : “172.18.0.10:27117”
          },
          {
          “_id” : 1,
          “host” : “172.18.0.11:27217”
          },
          {
          “_id” : 2,
          “host” : “172.18.0.12:27317”
          }
          ]
          }

          use admin
          rs.initiate( config )#副本集初始化,需要一定時間
          rs.initiate(config)
          { “ok” : 1 }

          rs.status()#副本集狀態,一個primary,其它SECONDARY。primary是主,只有primary能寫入
          replSet:SECONDARY> rs.status
          function() {
          return db._adminCommand(“replSetGetStatus”);
          }
          replSet:SECONDARY> rs.status()
          {
          “set” : “replSet”,
          “date” : ISODate(“2022-11-02T12:22:51.726Z”),
          “myState” : 1,
          “term” : NumberLong(1),
          “syncSourceHost” : “”,
          “syncSourceId” : -1,
          “heartbeatIntervalMillis” : NumberLong(2000),
          “majorityVoteCount” : 2,
          “writeMajorityCount” : 2,
          “votingMembersCount” : 3,
          “writableVotingMembersCount” : 3,
          “optimes” : {
          “lastCommittedOpTime” : {
          “ts” : Timestamp(1667391760, 1),
          “t” : NumberLong(-1)
          },
          “lastCommittedWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
          “readConcernMajorityOpTime” : {
          “ts” : Timestamp(1667391760, 1),
          “t” : NumberLong(-1)
          },
          “appliedOpTime” : {
          “ts” : Timestamp(1667391771, 8),
          “t” : NumberLong(1)
          },
          “durableOpTime” : {
          “ts” : Timestamp(1667391771, 8),
          “t” : NumberLong(1)
          },
          “lastAppliedWallTime” : ISODate(“2022-11-02T12:22:51.602Z”),
          “lastDurableWallTime” : ISODate(“2022-11-02T12:22:51.602Z”)
          },
          “lastStableRecoveryTimestamp” : Timestamp(1667391760, 1),
          “electionCandidateMetrics” : {
          “lastElectionReason” : “electionTimeout”,
          “lastElectionDate” : ISODate(“2022-11-02T12:22:51.544Z”),
          “electionTerm” : NumberLong(1),
          “lastCommittedOpTimeAtElection” : {
          “ts” : Timestamp(1667391760, 1),
          “t” : NumberLong(-1)
          },
          “lastSeenOpTimeAtElection” : {
          “ts” : Timestamp(1667391760, 1),
          “t” : NumberLong(-1)
          },
          “numVotesNeeded” : 2,
          “priorityAtElection” : 1,
          “electionTimeoutMillis” : NumberLong(10000),
          “numCatchUpOps” : NumberLong(0),
          “newTermStartDate” : ISODate(“2022-11-02T12:22:51.580Z”)
          },
          “members” : [
          {
          “_id” : 0,
          “name” : “172.18.0.10:27117”,
          “health” : 1,
          “state” : 1,
          “stateStr” : “PRIMARY”,
          “uptime” : 302,
          “optime” : {
          “ts” : Timestamp(1667391771, 8),
          “t” : NumberLong(1)
          },
          “optimeDate” : ISODate(“2022-11-02T12:22:51Z”),
          “lastAppliedWallTime” : ISODate(“2022-11-02T12:22:51.602Z”),
          “lastDurableWallTime” : ISODate(“2022-11-02T12:22:51.602Z”),
          “syncSourceHost” : “”,
          “syncSourceId” : -1,
          “infoMessage” : “Could not find member to sync from”,
          “electionTime” : Timestamp(1667391771, 1),
          “electionDate” : ISODate(“2022-11-02T12:22:51Z”),
          “configVersion” : 1,
          “configTerm” : 1,
          “self” : true,
          “lastHeartbeatMessage” : “”
          },
          {
          “_id” : 1,
          “name” : “172.18.0.11:27217”,
          “health” : 1,
          “state” : 2,
          “stateStr” : “SECONDARY”,
          “uptime” : 11,
          “optime” : {
          “ts” : Timestamp(1667391760, 1),
          “t” : NumberLong(-1)
          },
          “optimeDurable” : {
          “ts” : Timestamp(1667391760, 1),
          “t” : NumberLong(-1)
          },
          “optimeDate” : ISODate(“2022-11-02T12:22:40Z”),
          “optimeDurableDate” : ISODate(“2022-11-02T12:22:40Z”),
          “lastAppliedWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
          “lastDurableWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
          “lastHeartbeat” : ISODate(“2022-11-02T12:22:51.556Z”),
          “lastHeartbeatRecv” : ISODate(“2022-11-02T12:22:51.570Z”),
          “pingMs” : NumberLong(0),
          “lastHeartbeatMessage” : “”,
          “syncSourceHost” : “”,
          “syncSourceId” : -1,
          “infoMessage” : “”,
          “configVersion” : 1,
          “configTerm” : 0
          },
          {
          “_id” : 2,
          “name” : “172.18.0.12:27317”,
          “health” : 1,
          “state” : 2,
          “stateStr” : “SECONDARY”,
          “uptime” : 11,
          “optime” : {
          “ts” : Timestamp(1667391760, 1),
          “t” : NumberLong(-1)
          },
          “optimeDurable” : {
          “ts” : Timestamp(1667391760, 1),
          “t” : NumberLong(-1)
          },
          “optimeDate” : ISODate(“2022-11-02T12:22:40Z”),
          “optimeDurableDate” : ISODate(“2022-11-02T12:22:40Z”),
          “lastAppliedWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
          “lastDurableWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
          “lastHeartbeat” : ISODate(“2022-11-02T12:22:51.556Z”),
          “lastHeartbeatRecv” : ISODate(“2022-11-02T12:22:51.558Z”),
          “pingMs” : NumberLong(0),
          “lastHeartbeatMessage” : “”,
          “syncSourceHost” : “”,
          “syncSourceId” : -1,
          “infoMessage” : “”,
          “configVersion” : 1,
          “configTerm” : 0
          }
          ],
          “ok” : 1,
          “$clusterTime” : {
          “clusterTime” : Timestamp(1667391771, 8),
          “signature” : {
          “hash” : BinData(0,”AAAAAAAAAAAAAAAAAAAAAAAAAAA=”),
          “keyId” : NumberLong(0)
          }
          },
          “operationTime” : Timestamp(1667391771, 8)
          }

          測試副本集的數據同步
          mongo mongo1
          use wyzgs
          db.myuser.remove({age:{$lt:1000}})
          主庫執行刪除:
          replSet:PRIMARY> use wygzs
          switched to db wygzs
          replSet:PRIMARY> db.myuser.count()
          10000
          replSet:PRIMARY>
          replSet:PRIMARY> db.myuser.remove({age:{$lt:1000}})
          WriteResult({ “nRemoved” : 999 })
          備庫檢查數據同步
          rs.slaveOk()#SECONDARY需要聲明是slave才能查看數據
          從庫無法插入數據, 會提示
          “errmsg” : “not master”
          “code” : 10107,
          “codeName” : “NotWritablePrimary”,
          replSet:SECONDARY> use wygzs
          switched to db wygzs
          replSet:SECONDARY>
          replSet:SECONDARY>
          replSet:SECONDARY> rs.slaveOk()
          WARNING: slaveOk() is deprecated and may be removed in the next major release. Please use secondaryOk() instead.
          replSet:SECONDARY>
          replSet:SECONDARY> db.myuser.count()
          9001
          replSet:SECONDARY> db.myuser.insert({name: “name1”})
          WriteCommandError({
          “topologyVersion” : {
          “processId” : ObjectId(“63625f9ba54de6ea1ed4018c”),
          “counter” : NumberLong(4)
          },
          “ok” : 0,
          “errmsg” : “not master”,
          “code” : 10107,
          “codeName” : “NotWritablePrimary”,
          “$clusterTime” : {
          “clusterTime” : Timestamp(1667393091, 1),
          “signature” : {
          “hash” : BinData(0,”AAAAAAAAAAAAAAAAAAAAAAAAAAA=”),
          “keyId” : NumberLong(0)
          }
          },
          “operationTime” : Timestamp(1667393091, 1)
          })

          查看slave的延時情況
          rs.printSlaveReplicationInfo()
          rs.printSecondaryReplicationInfo()
          replSet:PRIMARY> rs.printSecondaryReplicationInfo()
          source: 172.18.0.11:27217
          syncedTo: Wed Nov 02 2022 12:46:29 GMT+0000 (UTC)
          0 secs (0 hrs) behind the primary
          source: 172.18.0.12:27317
          syncedTo: Wed Nov 02 2022 12:46:29 GMT+0000 (UTC)
          0 secs (0 hrs) behind the primary

          主庫模擬批量插入數據,備庫會出現演示
          replSet:PRIMARY> for(i=500001; i<=1000000;i++){
          … db.myuser.insert({name:’mytest’+i, age:i} )
          … }

          replSet:PRIMARY> rs.printSecondaryReplicationInfo()
          source: 172.18.0.11:27217
          syncedTo: Wed Nov 02 2022 12:49:45 GMT+0000 (UTC)
          2 secs (0 hrs) behind the primary
          source: 172.18.0.12:27317
          syncedTo: Wed Nov 02 2022 12:49:45 GMT+0000 (UTC)
          2 secs (0 hrs) behind the primary

          MongoDB入門到進階筆記:07-Mongo 副本集的搭建 添加 刪除 延時 仲裁 rs.status replSetName
          標簽MongoDB,學習筆記,技術文檔,數據庫,MongoDB

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 一区二区免费国产在线观看| 精品无码人妻一区二区三区| 韩国福利影视一区二区三区| 一区二区三区在线观看| 天美传媒一区二区三区| 台湾无码AV一区二区三区| 精品国产亚洲一区二区三区在线观看| 久久中文字幕一区二区| 免费萌白酱国产一区二区三区 | 伊人无码精品久久一区二区| 好吊视频一区二区三区| 动漫精品一区二区三区3d| 女同一区二区在线观看| 精品一区二区三人妻视频| 日本在线视频一区二区| 在线视频一区二区| 香蕉久久一区二区不卡无毒影院 | 人妻视频一区二区三区免费| 国产精品日本一区二区不卡视频| 波多野结衣高清一区二区三区| 一级特黄性色生活片一区二区| 视频一区二区中文字幕| 午夜无码一区二区三区在线观看| 国产在线观看一区二区三区 | 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 美女福利视频一区| 精品少妇ay一区二区三区| 极品少妇一区二区三区四区| 无码精品不卡一区二区三区| 国产色欲AV一区二区三区| 色欲AV无码一区二区三区| 国产精品免费一区二区三区| 日韩精品人妻一区二区中文八零| 日韩精品无码一区二区三区AV| 日韩AV无码久久一区二区| 亚洲av成人一区二区三区| 夜精品a一区二区三区| 人妻无码一区二区三区四区| 在线观看午夜亚洲一区| 亚洲国产视频一区| 国产成人高清亚洲一区久久|