久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MongoDB中怎么實現(xiàn)副本集

146次閱讀
沒有評論

共計 17892 個字符,預(yù)計需要花費(fèi) 45 分鐘才能閱讀完成。

自動寫代碼機(jī)器人,免費(fèi)開通

MongoDB 中怎么實現(xiàn)副本集,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1、環(huán)境

節(jié)點(diǎn) IP 操作系統(tǒng) MongoDB 數(shù)據(jù)節(jié)點(diǎn) 110.163.91.15RHLE6.5_x64mongodb-linux-x86_64-rhel62-3.4.7.tgz 數(shù)據(jù)節(jié)點(diǎn) 210.163.91.16RHLE6.5_x64mongodb-linux-x86_64-rhel62-3.4.7.tgz 數(shù)據(jù)節(jié)點(diǎn) 310.163.91.17RHLE6.5_x64mongodb-linux-x86_64-rhel62-3.4.7.tgz

2、分別在 3 個節(jié)點(diǎn)安裝配置和啟動 MongoDB
[root@D2-POMS15 ~]# rpm -qa | grep openssl
openssl098e-0.9.8e-17.el6_2.2.x86_64
openssl-1.0.1e-15.el6.x86_64
[root@D2-POMS15 ~]# mkdir /usr/local/mongodb
[root@D2-POMS15 ~]# tar -xvzf mongodb-linux-x86_64-rhel62-3.4.7.tgz
[root@D2-POMS15 ~]# mv mongodb-linux-x86_64-rhel62-3.4.7/* /usr/local/mongodb/
[root@D2-POMS15 ~]# vim .bash_profile
# .bash_profile

# Get the aliases and functions
if [-f ~/.bashrc]; then
  . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH=$PATH:/usr/local/mongodb/bin/
export PATH
[root@D2-POMS15 ~]# . .bash_profile
[root@D2-POMS15 ~]# mkdir /usr/local/mongodb/db
[root@D2-POMS15 ~]# mkdir /usr/local/mongodb/log
[root@D2-POMS15 ~]# touch /usr/local/mongodb/log/mongodb.log
[root@D2-POMS15 ~]# vim /usr/local/mongodb/mongodb.conf
dbpath=/usr/local/mongodb/db
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
noauth=true
port=27017
fork=true
replSet=stoners
[root@D2-POMS15 ~]# mongod -f /usr/local/mongodb/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 11580
child process started successfully, parent exiting
[root@D2-POMS15 ~]# mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.

[root@D2-POMS15 ~]# mongod -f /usr/local/mongodb/mongodb.conf
[root@D2-POMS16 ~]# mongod -f /usr/local/mongodb/mongodb.conf
[root@D2-POMS17 ~]# mongod -f /usr/local/mongodb/mongodb.conf

3、在任一節(jié)點(diǎn)進(jìn)行副本集配置
初始化副本集配置。
語法:
{
    _id : setname ,
     members : [
         {_id : 0, host : host0},
         {_id : 1, host : host1},
         {_id : 2, host : host2},
     ]
}
配置其中一個節(jié)點(diǎn)為仲裁的語法:
{
    _id : my_replica_set ,
     members : [
         {_id : 0, host : rs1.example.net:27017},
         {_id : 1, host : rs2.example.net:27017},
         {_id : 2, host : rs3.example.net , arbiterOnly: true},
     ]
}

rs.initiate({_id: stoners ,members:[{_id:0,host: 10.163.97.15:27017}]})
{ok : 1}
stoners:SECONDARY rs.conf()
{
  _id : stoners ,
  version : 1,
  protocolVersion : NumberLong(1),
  members : [
  {
  _id : 0,
  host : 10.163.97.15: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 : 60000,
  getLastErrorModes : {

  },
  getLastErrorDefaults : {
  w : 1,
  wtimeout : 0
  },
  replicaSetId : ObjectId(5996b49a33625594149428f2)
  }
}

添加節(jié)點(diǎn):
stoners:PRIMARY rs.add(10.163.97.16)
{ok : 1}
stoners:PRIMARY rs.add(10.163.97.17)
{ok : 1}

查看狀態(tài):
stoners:PRIMARY rs.status()
{
  set : stoners ,
  date : ISODate(2017-08-18T09:49:18.307Z),
  myState : 1,
  term : NumberLong(1),
  heartbeatIntervalMillis : NumberLong(2000),
  optimes : {
  lastCommittedOpTime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  appliedOpTime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  durableOpTime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  }
  },
  members : [
  {
  _id : 0,
  name : 10.163.97.15:27017 ,
  health : 1,
  state : 1,
  stateStr : PRIMARY ,
  uptime : 144,
  optime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDate : ISODate(2017-08-18T09:49:15Z),
  infoMessage : could not find member to sync from ,
  electionTime : Timestamp(1503049643, 2),
  electionDate : ISODate(2017-08-18T09:47:23Z),
  configVersion : 3,
  self : true
  },
  {
  _id : 1,
  name : 10.163.97.16:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 86,
  optime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDurable : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDate : ISODate(2017-08-18T09:49:15Z),
  optimeDurableDate : ISODate(2017-08-18T09:49:15Z),
  lastHeartbeat : ISODate(2017-08-18T09:49:17.787Z),
  lastHeartbeatRecv : ISODate(2017-08-18T09:49:16.774Z),
  pingMs : NumberLong(0),
  syncingTo : 10.163.97.15:27017 ,
  configVersion : 3
  },
  {
  _id : 2,
  name : 10.163.97.17:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 52,
  optime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDurable : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDate : ISODate(2017-08-18T09:49:15Z),
  optimeDurableDate : ISODate(2017-08-18T09:49:15Z),
  lastHeartbeat : ISODate(2017-08-18T09:49:17.787Z),
  lastHeartbeatRecv : ISODate(2017-08-18T09:49:16.883Z),
  pingMs : NumberLong(0),
  syncingTo : 10.163.97.15:27017 ,
  configVersion : 3
  }
  ],
  ok : 1
}

4、測試數(shù)據(jù)寫入
主節(jié)點(diǎn)寫入數(shù)據(jù):
stoners:PRIMARY use hr
switched to db hr
stoners:PRIMARY db.emp.insert({num :1})
WriteResult({nInserted : 1})
stoners:PRIMARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }

直接查詢副本節(jié)點(diǎn)報錯:
stoners:SECONDARY use hr
switched to db hr
stoners:SECONDARY db.emp.find();
Error: error: {
  ok : 0,
  errmsg : not master and slaveOk=false ,
  code : 13435,
  codeName : NotMasterNoSlaveOk
}

設(shè)置副本節(jié)點(diǎn)可讀:
stoners:SECONDARY db.getMongo().setSlaveOk();
stoners:SECONDARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }

另一個副本節(jié)點(diǎn):
stoners:SECONDARY db.getMongo().setSlaveOk();
stoners:SECONDARY use hr
switched to db hr
stoners:SECONDARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }

5、測試故障切換
先關(guān)閉主節(jié)點(diǎn):
stoners:PRIMARY use admin
switched to db admin
stoners:PRIMARY db.shutdownServer();
server should be down…

其中一個副本節(jié)點(diǎn)變?yōu)榱酥鞴?jié)點(diǎn):
stoners:SECONDARY
stoners:PRIMARY
stoners:PRIMARY rs.status()
{
  set : stoners ,
  date : ISODate(2017-08-18T10:03:49.050Z),
  myState : 1,
  term : NumberLong(2),
  heartbeatIntervalMillis : NumberLong(2000),
  optimes : {
  lastCommittedOpTime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  appliedOpTime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  durableOpTime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  }
  },
  members : [
  {
  _id : 0,
  name : 10.163.97.15:27017 ,
  health : 0,
  state : 8,
  stateStr : (not reachable/healthy) ,
  uptime : 0,
  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(2017-08-18T10:03:47.314Z),
  lastHeartbeatRecv : ISODate(2017-08-18T10:01:03.792Z),
  pingMs : NumberLong(0),
  lastHeartbeatMessage : Connection refused ,
  configVersion : -1
  },
  {
  _id : 1,
  name : 10.163.97.16:27017 ,
  health : 1,
  state : 1,
  stateStr : PRIMARY ,
  uptime : 929,
  optime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:03:44Z),
  electionTime : Timestamp(1503050473, 1),
  electionDate : ISODate(2017-08-18T10:01:13Z),
  configVersion : 3,
  self : true
  },
  {
  _id : 2,
  name : 10.163.97.17:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 845,
  optime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  optimeDurable : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:03:44Z),
  optimeDurableDate : ISODate(2017-08-18T10:03:44Z),
  lastHeartbeat : ISODate(2017-08-18T10:03:47.252Z),
  lastHeartbeatRecv : ISODate(2017-08-18T10:03:47.998Z),
  pingMs : NumberLong(0),
  syncingTo : 10.163.97.16:27017 ,
  configVersion : 3
  }
  ],
  ok : 1
}

在主節(jié)點(diǎn)插入數(shù)據(jù):
stoners:PRIMARY use hr
switched to db hr
stoners:PRIMARY db.emp.insert({num :2})
WriteResult({nInserted : 1})
stoners:PRIMARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }
{_id : ObjectId( 5996bbcb5945237d11f3052d), num : 2 }

在另一個副本節(jié)點(diǎn)查看:
stoners:SECONDARY use hr
switched to db hr
stoners:SECONDARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }
{_id : ObjectId( 5996bbcb5945237d11f3052d), num : 2 }

現(xiàn)在啟動關(guān)閉的節(jié)點(diǎn):
[root@D2-POMS15 ~]# mongod -f /usr/local/mongodb/mongodb.conf
啟動后自動成為副本節(jié)點(diǎn):
stoners:SECONDARY rs.status()
{
  set : stoners ,
  date : ISODate(2017-08-18T10:08:25.401Z),
  myState : 2,
  term : NumberLong(2),
  syncingTo : 10.163.97.17:27017 ,
  heartbeatIntervalMillis : NumberLong(2000),
  optimes : {
  lastCommittedOpTime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  appliedOpTime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  durableOpTime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  }
  },
  members : [
  {
  _id : 0,
  name : 10.163.97.15:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 49,
  optime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:09:34Z),
  syncingTo : 10.163.97.17:27017 ,
  configVersion : 3,
  self : true
  },
  {
  _id : 1,
  name : 10.163.97.16:27017 ,
  health : 1,
  state : 1,
  stateStr : PRIMARY ,
  uptime : 48,
  optime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDurable : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:09:34Z),
  optimeDurableDate : ISODate(2017-08-18T10:09:34Z),
  lastHeartbeat : ISODate(2017-08-18T10:08:24.973Z),
  lastHeartbeatRecv : ISODate(2017-08-18T10:08:23.753Z),
  pingMs : NumberLong(0),
  electionTime : Timestamp(1503050473, 1),
  electionDate : ISODate(2017-08-18T10:01:13Z),
  configVersion : 3
  },
  {
  _id : 2,
  name : 10.163.97.17:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 48,
  optime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDurable : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:09:34Z),
  optimeDurableDate : ISODate(2017-08-18T10:09:34Z),
  lastHeartbeat : ISODate(2017-08-18T10:08:24.973Z),
  lastHeartbeatRecv : ISODate(2017-08-18T10:08:23.520Z),
  pingMs : NumberLong(0),
  syncingTo : 10.163.97.16:27017 ,
  configVersion : 3
  }
  ],
  ok : 1
}

數(shù)據(jù)也同步過來了。
stoners:SECONDARY db.getMongo().setSlaveOk();
stoners:SECONDARY use hr
switched to db hr
stoners:SECONDARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }
{_id : ObjectId( 5996bbcb5945237d11f3052d), num : 2 }

2、分別在 3 個節(jié)點(diǎn)安裝配置和啟動 MongoDB
[root@D2-POMS15 ~]# rpm -qa | grep openssl
openssl098e-0.9.8e-17.el6_2.2.x86_64
openssl-1.0.1e-15.el6.x86_64
[root@D2-POMS15 ~]# mkdir /usr/local/mongodb
[root@D2-POMS15 ~]# tar -xvzf mongodb-linux-x86_64-rhel62-3.4.7.tgz
[root@D2-POMS15 ~]# mv mongodb-linux-x86_64-rhel62-3.4.7/* /usr/local/mongodb/
[root@D2-POMS15 ~]# vim .bash_profile
# .bash_profile

# Get the aliases and functions
if [-f ~/.bashrc]; then
  . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH=$PATH:/usr/local/mongodb/bin/
export PATH
[root@D2-POMS15 ~]# . .bash_profile
[root@D2-POMS15 ~]# mkdir /usr/local/mongodb/db
[root@D2-POMS15 ~]# mkdir /usr/local/mongodb/log
[root@D2-POMS15 ~]# touch /usr/local/mongodb/log/mongodb.log
[root@D2-POMS15 ~]# vim /usr/local/mongodb/mongodb.conf
dbpath=/usr/local/mongodb/db
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
noauth=true
port=27017
fork=true
replSet=stoners
[root@D2-POMS15 ~]# mongod -f /usr/local/mongodb/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 11580
child process started successfully, parent exiting
[root@D2-POMS15 ~]# mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.

[root@D2-POMS15 ~]# mongod -f /usr/local/mongodb/mongodb.conf
[root@D2-POMS16 ~]# mongod -f /usr/local/mongodb/mongodb.conf
[root@D2-POMS17 ~]# mongod -f /usr/local/mongodb/mongodb.conf

3、在任一節(jié)點(diǎn)進(jìn)行副本集配置
初始化副本集配置。
語法:
{
    _id : setname ,
     members : [
         {_id : 0, host : host0},
         {_id : 1, host : host1},
         {_id : 2, host : host2},
     ]
}
配置其中一個節(jié)點(diǎn)為仲裁的語法:
{
    _id : my_replica_set ,
     members : [
         {_id : 0, host : rs1.example.net:27017},
         {_id : 1, host : rs2.example.net:27017},
         {_id : 2, host : rs3.example.net , arbiterOnly: true},
     ]
}

rs.initiate({_id: stoners ,members:[{_id:0,host: 10.163.97.15:27017}]})
{ok : 1}
stoners:SECONDARY rs.conf()
{
  _id : stoners ,
  version : 1,
  protocolVersion : NumberLong(1),
  members : [
  {
  _id : 0,
  host : 10.163.97.15: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 : 60000,
  getLastErrorModes : {

  },
  getLastErrorDefaults : {
  w : 1,
  wtimeout : 0
  },
  replicaSetId : ObjectId(5996b49a33625594149428f2)
  }
}

添加節(jié)點(diǎn):
stoners:PRIMARY rs.add(10.163.97.16)
{ok : 1}
stoners:PRIMARY rs.add(10.163.97.17)
{ok : 1}

查看狀態(tài):
stoners:PRIMARY rs.status()
{
  set : stoners ,
  date : ISODate(2017-08-18T09:49:18.307Z),
  myState : 1,
  term : NumberLong(1),
  heartbeatIntervalMillis : NumberLong(2000),
  optimes : {
  lastCommittedOpTime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  appliedOpTime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  durableOpTime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  }
  },
  members : [
  {
  _id : 0,
  name : 10.163.97.15:27017 ,
  health : 1,
  state : 1,
  stateStr : PRIMARY ,
  uptime : 144,
  optime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDate : ISODate(2017-08-18T09:49:15Z),
  infoMessage : could not find member to sync from ,
  electionTime : Timestamp(1503049643, 2),
  electionDate : ISODate(2017-08-18T09:47:23Z),
  configVersion : 3,
  self : true
  },
  {
  _id : 1,
  name : 10.163.97.16:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 86,
  optime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDurable : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDate : ISODate(2017-08-18T09:49:15Z),
  optimeDurableDate : ISODate(2017-08-18T09:49:15Z),
  lastHeartbeat : ISODate(2017-08-18T09:49:17.787Z),
  lastHeartbeatRecv : ISODate(2017-08-18T09:49:16.774Z),
  pingMs : NumberLong(0),
  syncingTo : 10.163.97.15:27017 ,
  configVersion : 3
  },
  {
  _id : 2,
  name : 10.163.97.17:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 52,
  optime : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDurable : {
  ts : Timestamp(1503049755, 1),
  t : NumberLong(1)
  },
  optimeDate : ISODate(2017-08-18T09:49:15Z),
  optimeDurableDate : ISODate(2017-08-18T09:49:15Z),
  lastHeartbeat : ISODate(2017-08-18T09:49:17.787Z),
  lastHeartbeatRecv : ISODate(2017-08-18T09:49:16.883Z),
  pingMs : NumberLong(0),
  syncingTo : 10.163.97.15:27017 ,
  configVersion : 3
  }
  ],
  ok : 1
}

4、測試數(shù)據(jù)寫入
主節(jié)點(diǎn)寫入數(shù)據(jù):
stoners:PRIMARY use hr
switched to db hr
stoners:PRIMARY db.emp.insert({num :1})
WriteResult({nInserted : 1})
stoners:PRIMARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }

直接查詢副本節(jié)點(diǎn)報錯:
stoners:SECONDARY use hr
switched to db hr
stoners:SECONDARY db.emp.find();
Error: error: {
  ok : 0,
  errmsg : not master and slaveOk=false ,
  code : 13435,
  codeName : NotMasterNoSlaveOk
}

設(shè)置副本節(jié)點(diǎn)可讀:
stoners:SECONDARY db.getMongo().setSlaveOk();
stoners:SECONDARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }

另一個副本節(jié)點(diǎn):
stoners:SECONDARY db.getMongo().setSlaveOk();
stoners:SECONDARY use hr
switched to db hr
stoners:SECONDARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }

5、測試故障切換
先關(guān)閉主節(jié)點(diǎn):
stoners:PRIMARY use admin
switched to db admin
stoners:PRIMARY db.shutdownServer();
server should be down…

其中一個副本節(jié)點(diǎn)變?yōu)榱酥鞴?jié)點(diǎn):
stoners:SECONDARY
stoners:PRIMARY
stoners:PRIMARY rs.status()
{
  set : stoners ,
  date : ISODate(2017-08-18T10:03:49.050Z),
  myState : 1,
  term : NumberLong(2),
  heartbeatIntervalMillis : NumberLong(2000),
  optimes : {
  lastCommittedOpTime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  appliedOpTime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  durableOpTime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  }
  },
  members : [
  {
  _id : 0,
  name : 10.163.97.15:27017 ,
  health : 0,
  state : 8,
  stateStr : (not reachable/healthy) ,
  uptime : 0,
  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(2017-08-18T10:03:47.314Z),
  lastHeartbeatRecv : ISODate(2017-08-18T10:01:03.792Z),
  pingMs : NumberLong(0),
  lastHeartbeatMessage : Connection refused ,
  configVersion : -1
  },
  {
  _id : 1,
  name : 10.163.97.16:27017 ,
  health : 1,
  state : 1,
  stateStr : PRIMARY ,
  uptime : 929,
  optime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:03:44Z),
  electionTime : Timestamp(1503050473, 1),
  electionDate : ISODate(2017-08-18T10:01:13Z),
  configVersion : 3,
  self : true
  },
  {
  _id : 2,
  name : 10.163.97.17:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 845,
  optime : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  optimeDurable : {
  ts : Timestamp(1503050624, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:03:44Z),
  optimeDurableDate : ISODate(2017-08-18T10:03:44Z),
  lastHeartbeat : ISODate(2017-08-18T10:03:47.252Z),
  lastHeartbeatRecv : ISODate(2017-08-18T10:03:47.998Z),
  pingMs : NumberLong(0),
  syncingTo : 10.163.97.16:27017 ,
  configVersion : 3
  }
  ],
  ok : 1
}

在主節(jié)點(diǎn)插入數(shù)據(jù):
stoners:PRIMARY use hr
switched to db hr
stoners:PRIMARY db.emp.insert({num :2})
WriteResult({nInserted : 1})
stoners:PRIMARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }
{_id : ObjectId( 5996bbcb5945237d11f3052d), num : 2 }

在另一個副本節(jié)點(diǎn)查看:
stoners:SECONDARY use hr
switched to db hr
stoners:SECONDARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }
{_id : ObjectId( 5996bbcb5945237d11f3052d), num : 2 }

現(xiàn)在啟動關(guān)閉的節(jié)點(diǎn):
[root@D2-POMS15 ~]# mongod -f /usr/local/mongodb/mongodb.conf
啟動后自動成為副本節(jié)點(diǎn):
stoners:SECONDARY rs.status()
{
  set : stoners ,
  date : ISODate(2017-08-18T10:08:25.401Z),
  myState : 2,
  term : NumberLong(2),
  syncingTo : 10.163.97.17:27017 ,
  heartbeatIntervalMillis : NumberLong(2000),
  optimes : {
  lastCommittedOpTime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  appliedOpTime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  durableOpTime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  }
  },
  members : [
  {
  _id : 0,
  name : 10.163.97.15:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 49,
  optime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:09:34Z),
  syncingTo : 10.163.97.17:27017 ,
  configVersion : 3,
  self : true
  },
  {
  _id : 1,
  name : 10.163.97.16:27017 ,
  health : 1,
  state : 1,
  stateStr : PRIMARY ,
  uptime : 48,
  optime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDurable : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:09:34Z),
  optimeDurableDate : ISODate(2017-08-18T10:09:34Z),
  lastHeartbeat : ISODate(2017-08-18T10:08:24.973Z),
  lastHeartbeatRecv : ISODate(2017-08-18T10:08:23.753Z),
  pingMs : NumberLong(0),
  electionTime : Timestamp(1503050473, 1),
  electionDate : ISODate(2017-08-18T10:01:13Z),
  configVersion : 3
  },
  {
  _id : 2,
  name : 10.163.97.17:27017 ,
  health : 1,
  state : 2,
  stateStr : SECONDARY ,
  uptime : 48,
  optime : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDurable : {
  ts : Timestamp(1503050974, 1),
  t : NumberLong(2)
  },
  optimeDate : ISODate(2017-08-18T10:09:34Z),
  optimeDurableDate : ISODate(2017-08-18T10:09:34Z),
  lastHeartbeat : ISODate(2017-08-18T10:08:24.973Z),
  lastHeartbeatRecv : ISODate(2017-08-18T10:08:23.520Z),
  pingMs : NumberLong(0),
  syncingTo : 10.163.97.16:27017 ,
  configVersion : 3
  }
  ],
  ok : 1
}

數(shù)據(jù)也同步過來了。
stoners:SECONDARY db.getMongo().setSlaveOk();
stoners:SECONDARY use hr
switched to db hr
stoners:SECONDARY db.emp.find();
{_id : ObjectId( 5996b96ca4ca3f4911a83ae8), num : 1 }
{_id : ObjectId( 5996bbcb5945237d11f3052d), num : 2 }

關(guān)于 MongoDB 中怎么實現(xiàn)副本集問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注丸趣 TV 行業(yè)資訊頻道了解更多相關(guān)知識。

向 AI 問一下細(xì)節(jié)

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-12-04發(fā)表,共計17892字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 织金县| 商水县| 红原县| 蛟河市| 长岭县| 榆中县| 大洼县| 大余县| 中超| 循化| 武乡县| 孟津县| 枞阳县| 疏附县| 仪征市| 根河市| 万宁市| 高雄市| 奉化市| 虞城县| 射洪县| 手机| 图木舒克市| 阿克苏市| 五指山市| 望谟县| 刚察县| 沾益县| 安宁市| 庆阳市| 新和县| 城口县| 九龙县| 翁源县| 福州市| 库伦旗| 武宣县| 苏州市| 阿合奇县| 新丰县| 五寨县|