程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> mongodb副本集

mongodb副本集

編輯:DB2教程

mongodb副本集


分別在節點上配置好參數後如下
hapame-db:~ # cat /etc/mongod.conf |grep jieshi
replSet = jieshi
重啟MongoDB服務器,並保證服務器沒有別的數據庫(除admin
local),如果有其他數據庫,在這一步rs.initiate(hapameconfig),會報錯。
任意登入其中一台MongoDB服務器,做一下配置:
hapame-db:~ # mongo
MongoDB shell version: 1.6.5-rc
connecting to: test
> show dbs
admin
local
> hapameconfig= {_id:"jieshi", members: [
... {_id:0,host:"192.168.16.234"},
... {_id:1,host:"192.168.16.103"},
... {_id:2,host:"192.168.16.216"}
... ]}
{
 "_id" : "jieshi",
 "members" : [
  {
   "_id" : 0,
   "host" : "192.168.16.234"
  },
  {
   "_id" : 1,
   "host" : "192.168.16.103"
  },
  {
   "_id" : 2,
   "host" : "192.168.16.216"
  }
 ]
}
> rs.initiate(hapameconfig)
{
 "info" : "Config now saved locally.  Should come online in about a minute.",
 "ok" : 1
}
> db.system.replset.find()
{ "_id" : "jieshi", "version" : 1, "members" : [
 {
  "_id" : 0,
  "host" : "192.168.16.234"
 },
 {
  "_id" : 1,
  "host" : "192.168.16.103"
 },
 {
  "_id" : 2,
  "host" : "192.168.16.216"
 }
] }
在192.168.16.234服務器上:(SUSE Linux Enterprise Server 11 (x86_64))
> rs.isMaster()
{
 "setName" : "jieshi",
 "ismaster" : true,
 "secondary" : false,
 "hosts" : [
  "192.168.16.234",
  "192.168.16.216",
  "192.168.16.103"
 ],
 "ok" : 1
}
> rs.status()
{
 "set" : "jieshi",
 "date" : "Fri Dec 10 2010 12:48:46 GMT+0800 (CST)",
 "myState" : 1,
 "members" : [
  {
   "_id" : 0,
   "name" : "hapame-db:27017",
   "health" : 1,
   "state" : 1,
   "self" : true
  },
  {
   "_id" : 1,
   "name" : "192.168.16.103",
   "health" : 1,
   "state" : 2,
   "uptime" : 133,
   "lastHeartbeat" : "Fri Dec 10 2010 12:48:45 GMT+0800 (CST)"
  },
  {
   "_id" : 2,
   "name" : "192.168.16.216",
   "health" : 1,
   "state" : 2,
   "uptime" : 127,
   "lastHeartbeat" : "Fri Dec 10 2010 12:48:45 GMT+0800 (CST)"
  }
 ],
 "ok" : 1
}
在192.168.16.103服務器上:(CentOS release 5.5)
[root@jieshiyeskey ~]# cat /etc/mongod.conf |grep jieshi
replSet=jieshi
[root@jieshiyeskey mongo]# mongo
MongoDB shell version: 1.6.4
connecting to: test
> use local
switched to db local
> show collections
me
oplog.rs
replset.minvalid
system.indexes
system.replset
> db.system.replset.find()
{ "_id" : "jieshi", "version" : 1, "members" : [
 {
  "_id" : 0,
  "host" : "192.168.16.234"
 },
 {
  "_id" : 1,
  "host" : "192.168.16.103"
 },
 {
  "_id" : 2,
  "host" : "192.168.16.216"
 }
] }
> rs.isMaster()
{
 "setName" : "jieshi",
 "ismaster" : false,
 "secondary" : true,
 "hosts" : [
  "192.168.16.103",
  "192.168.16.216",
  "192.168.16.234"
 ],
 "primary" : "192.168.16.234",
 "ok" : 1
}
> rs.status()
{
 "set" : "jieshi",
 "date" : "Fri Dec 10 2010 12:52:17 GMT+0800 (CST)",
 "myState" : 2,
 "members" : [
  {
   "_id" : 0,
   "name" : "192.168.16.234",
   "health" : 1,
   "state" : 1,
   "uptime" : 344,
   "lastHeartbeat" : "Fri Dec 10 2010 12:52:16 GMT+0800 (CST)"
  },
  {
   "_id" : 1,
   "name" : "jieshiyeskey.hapaworld.com.cn:27017",
   "health" : 1,
   "state" : 2,
   "self" : true
  },
  {
   "_id" : 2,
   "name" : "192.168.16.216",
   "health" : 1,
   "state" : 2,
   "uptime" : 338,
   "lastHeartbeat" : "Fri Dec 10 2010 12:52:16 GMT+0800 (CST)"
  }
 ],
 "ok" : 1
}
在192.168.16.216服務器上:(FreeBSD 8.1-RELEASE)
[root@jieshi ~]# cat /usr/local/etc/mongodb.conf |grep jieshi
replSet=jieshi
[root@jieshi /var/db/mongodb]# mongo
MongoDB shell version: 1.6.3
connecting to: test
> show dbs
admin
local
> use local
switched to db local
> show collections
me
oplog.rs
replset.minvalid
system.indexes
system.replset
> db.system.replset.find()
{ "_id" : "jieshi", "version" : 1, "members" : [
 {
  "_id" : 0,
  "host" : "192.168.16.234"
 },
 {
  "_id" : 1,
  "host" : "192.168.16.103"
 },
 {
  "_id" : 2,
  "host" : "192.168.16.216"
 }
] }
> rs.isMaster()
{
 "setName" : "jieshi",
 "ismaster" : false,
 "secondary" : true,
 "hosts" : [
  "192.168.16.216",
  "192.168.16.103",
  "192.168.16.234"
 ],
 "primary" : "192.168.16.234",
 "ok" : 1
}
> rs.status()
{
 "set" : "jieshi",
 "date" : "Fri Dec 10 2010 04:58:15 GMT+0800 (CST)",
 "myState" : 2,
 "members" : [
  {
   "_id" : 0,
   "name" : "192.168.16.234",
   "health" : 1,
   "state" : 1,
   "uptime" : 101,
   "lastHeartbeat" : "Fri Dec 10 2010 04:58:14 GMT+0800 (CST)"
  },
  {
   "_id" : 1,
   "name" : "192.168.16.103",
   "health" : 1,
   "state" : 2,
   "uptime" : 101,
   "lastHeartbeat" : "Fri Dec 10 2010 04:58:14 GMT+0800 (CST)"
  },
  {
   "_id" : 2,
   "name" : "jieshi.hapame.com.cn:27017",
   "health" : 1,
   "state" : 2,
   "self" : true
  }
 ],
 "ok" : 1
}
@@添加新成員192.168.16.211:(Red Hat Enterprise Linux Server release 6.0 (Santiago))
[root@6 mongo]# cat /etc/mongod.conf  |grep jieshi
replSet=jieshi
root@6 mongo]# /etc/init.d/mongod start
Starting mongod: forked process: 8131
all output going to: /var/log/mongo/mongod.log
                                                           [  OK  ]
[root@6 mongo]# tail /var/log/mongo/mongod.log
Fri Dec 10 13:18:50 [startReplSets] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)
Fri Dec 10 13:18:54 [snapshotthread] cpu: elapsed:4000  writelock: 0%
Fri Dec 10 13:18:58 [snapshotthread] cpu: elapsed:4000  writelock: 0%
Fri Dec 10 13:19:00 [startReplSets] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)
Fri Dec 10 13:19:02 [snapshotthread] cpu: elapsed:4000  writelock: 0%
Fri Dec 10 13:19:06 [snapshotthread] cpu: elapsed:4000  writelock: 0%
Fri Dec 10 13:19:10 [snapshotthread] cpu: elapsed:4000  writelock: 0%
Fri Dec 10 13:19:10 [startReplSets] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG) ##每個節點上都會報這個警告
Fri Dec 10 13:19:14 [snapshotthread] cpu: elapsed:4000  writelock: 0%
Fri Dec 10 13:19:18 [snapshotthread] cpu: elapsed:4000  writelock: 0%
要在primary 上才能添加新成員:(當前為192.168.16.234為primary)
hapame-db:~ # mongo
MongoDB shell version: 1.6.5-rc1
connecting to: test
> rs.add("192.168.16.211")
{ "ok" : 1 }
> rs.conf()
{
 "_id" : "jieshi",
 "version" : 2,
 "members" : [
  {
   "_id" : 0,
   "host" : "192.168.16.234"
  },
  {
   "_id" : 1,
   "host" : "192.168.16.103"
  },
  {
   "_id" : 2,
   "host" : "192.168.16.216"
  },
  {
   "_id" : 3,
   "host" : "192.168.16.211"
  }
 ]
}
> rs.isMaster()
{
 "setName" : "jieshi",
 "ismaster" : true,
 "secondary" : false,
 "hosts" : [
  "192.168.16.234",
  "192.168.16.211",
  "192.168.16.216",
  "192.168.16.103"
 ],
 "ok" : 1
}
> rs.status()
{
 "set" : "jieshi",
 "date" : "Fri Dec 10 2010 13:23:10 GMT+0800 (CST)",
 "myState" : 1,
 "members" : [
  {
   "_id" : 0,
   "name" : "hapame-db:27017",
   "health" : 1,
   "state" : 1,
   "self" : true
  },
  {
   "_id" : 1,
   "name" : "192.168.16.103",
   "health" : 1,
   "state" : 2,
   "uptime" : 46,
   "lastHeartbeat" : "Fri Dec 10 2010 13:23:08 GMT+0800 (CST)"
  },
  {
   "_id" : 2,
   "name" : "192.168.16.216",
   "health" : 1,
   "state" : 2,
   "uptime" : 46,
   "lastHeartbeat" : "Fri Dec 10 2010 13:23:08 GMT+0800 (CST)"
  },
  {
   "_id" : 3,
   "name" : "192.168.16.211",
   "health" : 1,
   "state" : 2,
   "uptime" : 38,
   "lastHeartbeat" : "Fri Dec 10 2010 13:23:08 GMT+0800 (CST)"
  }
 ],
 "ok" : 1
}
>
在192.168.16.211上查看如下:
[root@6 mongo]# mongo
MongoDB shell version: 1.6.4
connecting to: test
> show dbs
admin
local
> use local
switched to db local
> show collections
me
oplog.rs
replset.minvalid
system.indexes
system.replset
> db.system.replset.find()
{ "_id" : "jieshi", "version" : 2, "members" : [
 {
  "_id" : 0,
  "host" : "192.168.16.234"
 },
 {
  "_id" : 1,
  "host" : "192.168.16.103"
 },
 {
  "_id" : 2,
  "host" : "192.168.16.216"
 },
 {
  "_id" : 3,
  "host" : "192.168.16.211"
 }
] }
> rs.isMaster()
{
 "setName" : "jieshi",
 "ismaster" : false,
 "secondary" : true,
 "hosts" : [
  "192.168.16.211",
  "192.168.16.216",
  "192.168.16.103",
  "192.168.16.234"
 ],
 "primary" : "192.168.16.234",
 "ok" : 1
}
> rs.status()
{
 "set" : "jieshi",
 "date" : "Fri Dec 10 2010 13:24:54 GMT+0800 (CST)",
 "myState" : 2,
 "members" : [
  {
   "_id" : 0,
   "name" : "192.168.16.234",
   "health" : 1,
   "state" : 1,
   "uptime" : 142,
   "lastHeartbeat" : "Fri Dec 10 2010 13:24:52 GMT+0800 (CST)"
  },
  {
   "_id" : 1,
   "name" : "192.168.16.103",
   "health" : 1,
   "state" : 2,
   "uptime" : 142,
   "lastHeartbeat" : "Fri Dec 10 2010 13:24:52 GMT+0800 (CST)"
  },
  {
   "_id" : 2,
   "name" : "192.168.16.216",
   "health" : 1,
   "state" : 2,
   "uptime" : 142,
   "lastHeartbeat" : "Fri Dec 10 2010 13:24:52 GMT+0800 (CST)"
  },
  {
   "_id" : 3,
   "name" : "6.hapame.com:27017",
   "health" : 1,
   "state" : 2,
   "self" : true
  }
 ],
 "ok" : 1
}
測試:
在192.168.16.234上:
> rs.isMaster()
{
 "setName" : "jieshi",
 "ismaster" : true,   #表示為primary
 "secondary" : false,
 "hosts" : [
  "192.168.16.234",
  "192.168.16.211",
  "192.168.16.216",
  "192.168.16.103"
 ],
 "ok" : 1
}  
在primary可以有全部的權限,但在輔上就沒有全部的權限如下:
 > show dbs
admin
hapameworld
local
> use hapameworld
switched to db hapameworld
> show collections
hapameworld
system.indexes
> db.hapameworld.find()
{ "_id" : ObjectId("4d01bed1356d93b46d48ba34"), "name" : "markgeng" }
> show dbs
admin
hapameworld
local
> use hapameworld
switched to db hapameworld
> show collections
Fri Dec 10 14:46:57 uncaught exception: error: { "$err" : "not master", "code" : 10107 }

現在關掉192.168.16.234服務器:
hapame-db:~ # ps -ef |grep mongod
root      2377     1  7 12:35 ?        00:09:55 /opt/mongodb/bin/mongod -f /etc/mongod.conf
root     11035 10139  0 14:51 pts/5    00:00:00 grep mongod
hapame-db:~ # killall mongod
hapame-db:~ # ps -ef |grep mongod
root     11039 10139  0 14:51 pts/5    00:00:00 grep mongod
現在192.168.16.211服務器為primary如下:
[root@6 ~]# mongo
MongoDB shell version: 1.6.4
connecting to: test
> rs.isMaster()
{
 "setName" : "jieshi",
 "ismaster" : true,
 "secondary" : false,
 "hosts" : [
  "192.168.16.211",
  "192.168.16.216",
  "192.168.16.103",
  "192.168.16.234"
 ],
 "ok" : 1
}
> show dbs
admin
hapameworld
local
> use hapameworld
switched to db hapameworld
> show collections
hapameworld
system.indexes
> db.hapameworld.find()
{ "_id" : ObjectId("4d01bed1356d93b46d48ba34"), "name" : "markgeng" }
> db.hapameworld.insert({name:"jieshi"})
> db.hapameworld.find()                
{ "_id" : ObjectId("4d01bed1356d93b46d48ba34"), "name" : "markgeng" }
{ "_id" : ObjectId("4d01d812b68ce41287454183"), "name" : "jieshi" }
在輔的服務器上:
> show dbs
admin
hapameworld
local
> use hapameworld
switched to db hapameworld
> show collections
Fri Dec 10 15:36:13 uncaught exception: error: { "$err" : "not master", "code" : 10107 }
現在開啟以前的primary:(192.168.16.234)
hapame-db:~ # mongod -f /etc/mongod.conf
hapame-db:~ # forked process: 12997
all output going to: /opt/mongodb_logs/mongod.log
hapame-db:~ # ps -ef |grep mongod
root     12997     1  0 15:37 ?        00:00:00 mongod -f /etc/mongod.conf
root     13039 12417  0 15:37 pts/2    00:00:00 grep mongod
hapame-db:~ # mongo
MongoDB shell version: 1.6.5-rc1
connecting to: test
> rsMaster()
Fri Dec 10 15:38:10 ReferenceError: rsMaster is not defined (shell):0
> rs.isMaster()
{
 "setName" : "jieshi",
 "ismaster" : false, #已變成輔,primary並不會自己遷移回來
 "secondary" : true,
 "hosts" : [
  "192.168.16.234",
  "192.168.16.211",
  "192.168.16.216",
  "192.168.16.103"
 ],
 "primary" : "192.168.16.211",
 "ok" : 1
}
> show dbs
admin
hapameworld
local
> use hapameworld
switched to db hapameworld
> show collections
Fri Dec 10 15:38:43 uncaught exception: error: { "$err" : "not master", "code" : 10107 }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved