标签:
Mongodb之前一直是做主从模式,后来官方推荐用Replica Set(简称RS)来代替主从,主要是当primary节点出现故障后,RS集群内会有自动投票选举primary节点的机制,自动选出新的primary节点,这样应用程序就不需要关心主从切换的问题。想要配置一个简单的RS,至少要两台机器。我本地用了VMware以NAT方式跑了两台VPS,IP分别是:192.168.33.112和192.168.33.119,注意两台VPS的访问互通问题(iptables network等)
1.ssh登陆到112那台机器上,先下载mongodb最新版 现在是3.0.5 (3.x版本彪悍了很多,无论从读写的性能,还是数据压缩能力)
cd /usr/local/bin wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.5.tgz tar -zxvf mongodb-linux-x86_64-3.0.5.tar mv mongodb-linux-x86_64-3.0.5/ mongodb
mkdir -p /mnt/mongodb/rs/data mkdir -p /mnt/mongodb/rs/logs mkdir -p /mnt/mongodb/rs/config
vi /mnt/mongodb/rs/config/mongod.conf
dbpath=/mnt/mongodb/rs/data #数据存放目录 logpath=/mnt/mongodb/rs/logs/mongod.log #日志文件目录 pidfilepath=/mnt/mongodb/rs/mongod.pid #pid端口文件 port=27017 #mongodb端口 logappend=true #追加方式写日志文件 fork=true #后台运行 journal=true #启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里 oplogSize=2048 #同步操作记录文件大小(MB) smallfiles=true #使用较小的默认文件 replSet=27017_0 #副本集名称,同一个副本集,名称必须一致
4.跑mongod进程
cd /usr/local/bin/mongodb/bin/ ./mongod -f /mnt/mongodb/rs/config/mongod.conf
about to fork child process, waiting until server is ready for connections. forked process: 1286 child process started successfully, parent exiting
然后以同样的方式在119那台机也让mongod跑起来...
./mongo 127.0.0.1:27017/admin
输入RS配置命令
config={_id : '27017_0',members : [{_id : 1, host : '192.168.33.119:27017'},{_id : 2, host : '192.168.33.112:27017'}]}
{ "_id" : "27017_0", "members" : [ { "_id" : 1, "host" : "192.168.33.119:27017" }, { "_id" : 2, "host" : "192.168.33.112:27017" } ] }
rs.initiate(config);
再输入命令检查RS状态:
rs.status()
{ "set" : "27017_0", "date" : ISODate("2015-08-24T19:41:37.778Z"), "myState" : 2, "members" : [ { "_id" : 1, "name" : "192.168.33.119:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 14, "optime" : Timestamp(1440445283, 1), "optimeDate" : ISODate("2015-08-24T19:41:23Z"), "lastHeartbeat" : ISODate("2015-08-24T19:41:37.226Z"), "lastHeartbeatRecv" : ISODate("2015-08-24T19:41:37.238Z"), "pingMs" : 1, "electionTime" : Timestamp(1440445283, 2), "electionDate" : ISODate("2015-08-24T19:41:23Z"), "configVersion" : 1 }, { "_id" : 2, "name" : "192.168.33.112:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 129, "optime" : Timestamp(1440445283, 1), "optimeDate" : ISODate("2015-08-24T19:41:23Z"), "configVersion" : 1, "self" : true } ], "ok" : 1 }
6.使用PHP来连接:
对于应用端(PHP),在框架连接mongodb的类里面,你可以这样写:
$con = new MongoClient("mongodb://192.168.33.112:27017,192.168.33.119:27017", array("replicaSet" => "27017_0"));
注意replicaset(副本集名)要写上,这样集群才可以自动发现节点...
That‘s it~
版权声明:本文为博主原创文章,未经博主允许不得转载。
Mongodb设置Replica Set集群 并使用PHP来连接
标签:
原文地址:http://blog.csdn.net/ddjohn/article/details/47959159