首页 > 数据库技术 > 详细

mongodb副本集部署

时间:2015-10-21 02:19:12      阅读:300      评论:0      收藏:0      [点我收藏+]
------------环境---------------------------------
192.168.56.111 host01 主
192.168.56.112 host02 从
192.168.56.113 host03 从


------------创建目录-----------------------------
在每个节点上创建如下的目录,以下以主节点为例
#存放整个mongodb文件
[root@host01 /]#mkdir -p /db/mongodb/replset
#存放mongodb数据文件
[root@host01 /]#mkdir -p /db/mongodb/replset/data
[root@host01 /]#mkdir -p /db/mongodb/replset/log


-----------解压mongodb-linux-x86_64-2.6.5.tgz-----
在每个节点上解压缩,并将mongodb安装文件转移到指定目录
[root@host01 soft]#tar -zxvf mongodb-linux-x86_64-2.6.5.tgz
[root@host01 soft]#mv mongodb-linux-x86_64-2.6.5 /db/mongodb/replset/mongodb




----------创建配置文件----------------------------
在每个节点上执行
mkdir -p /db/mongodb/replset/conf
vi mongo.cnf
内如如下:
port = 27017
fork = true
dbpath = /db/mongodb/replset/data
logpath = /db/mongodb/replset/log/logs
logappend = true
shardsvr = true
replSet = test


--------------启动mongod----------------
每台机器上执行
[root@host01 bin]#./mongod -f /db/mongodb/replset/conf/mongo.cnf


日志输出:
2015-10-16T10:59:43.769+0800 [rsStart] replSet info you may need to run replSetInitiate -- rs.initiate() in the shell -- if that is 
not already done


日志提示需要执行rs.initiate()进行初始化


------------初始化副本集---------------------
在任何一个节点上执行,这里在主节点上执行
[root@host01 conf]# mongo
MongoDB shell version: 2.6.5
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
> show dbsshow dbs
admin  (empty)
local  0.078GB
> use adminuse admin
switched to db admin


>config = { _id:"test", members:[{_id:0,host:"192.168.56.111:27017"},{_id:1,host:"192.168.56.112:27017"},{_id:2,host:"192.168.56.113:27017"}]}
>rs.initiate(config);
{
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
}






查看日志
2015-10-16T11:05:37.133+0800 [rsMgr] replSet PRIMARY
...
2015-10-16T11:05:52.225+0800 [rsHealthPoll] replSet member 192.168.56.112:27017 is now in state SECONDARY
2015-10-16T11:05:52.242+0800 [rsHealthPoll] replSet member 192.168.56.113:27017 is now in state SECONDARY


可以看出当前的节点已经是主节点,192.168.56.112和192.168.56.113为从节点.


查看副本集的状态
> rs.status();
{
        "set" : "test",
        "date" : ISODate("2015-10-16T03:10:30Z"),
        "myState" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "name" : "192.168.56.111:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 705,
                        "optime" : Timestamp(1444964727, 1),
                        "optimeDate" : ISODate("2015-10-16T03:05:27Z"),
                        "electionTime" : Timestamp(1444964736, 1),
                        "electionDate" : ISODate("2015-10-16T03:05:36Z"),
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "192.168.56.112:27017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 302,
                        "optime" : Timestamp(1444964727, 1),
                        "optimeDate" : ISODate("2015-10-16T03:05:27Z"),
                        "lastHeartbeat" : ISODate("2015-10-16T03:10:30Z"),
                        "lastHeartbeatRecv" : ISODate("2015-10-16T03:10:29Z"),
                        "pingMs" : 0,
                        "syncingTo" : "192.168.56.111:27017"
                },
                {
                        "_id" : 2,
                        "name" : "192.168.56.113:27017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 302,
                        "optime" : Timestamp(1444964727, 1),
                        "optimeDate" : ISODate("2015-10-16T03:05:27Z"),
                        "lastHeartbeat" : ISODate("2015-10-16T03:10:30Z"),
                        "lastHeartbeatRecv" : ISODate("2015-10-16T03:10:29Z"),
                        "pingMs" : 0,
                        "syncingTo" : "192.168.56.111:27017"
                }
        ],
        "ok" : 1
}




---------------------测试副本集数据复制功能-------------------------------


链接到主节点数据库
[root@host01 conf]# mongo
MongoDB shell version: 2.6.5
connecting to: test
test:PRIMARY> shopw shopw 
2015-10-16T11:12:50.888+0800 ReferenceError: shopw is not defined
test:PRIMARY> use hxl;
switched to db hxl


test:PRIMARY> db.students.insert({"name":"hxl","age":28});db.students.insert({"name":"hxl","age":28});
WriteResult({ "nInserted" : 1 })
test:PRIMARY> db.students.insert({"name":"chenli","age":25})db.students.insert({"name":"chenli","age":25})
WriteResult({ "nInserted" : 1 })




登陆到从节点
[root@host02 ~]# mongo
MongoDB shell version: 2.6.5
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
test:SECONDARY> use hxl;
switched to db hxl
test:SECONDARY> show collections;
2015-10-16T11:15:38.839+0800 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:131


#mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读
test:SECONDARY> db.getMongo().setSlaveOk();


test:SECONDARY> db.students.find()db.students.find()
{ "_id" : ObjectId("56206b86744c9fb2922a957a"), "name" : "hxl", "age" : 28 }
{ "_id" : ObjectId("56206b8d744c9fb2922a957b"), "name" : "chenli", "age" : 25 }


可以看到从节点上查看到主节点上写入的数据.

mongodb副本集部署

原文:http://blog.chinaunix.net/uid-77311-id-5212883.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!