|
> MongoDB简介:
MongoDB是一个用c++编写,开放源码的文档数据库,NoSQL数据库的一种。NoSQL有时也称作Not Only SQL的简写,是对不同于传统的关系型数据库的数据库管理系统的统称。了解更多,请戳这里。mongodb官网:http://www.mongodb.org/。原创作品,转载时请务必以超链接形式标明文章 原始出处:http://xuclv.blog.51cto.com/5503169/1307258
> 安装:
OS:Linux gentoo2 3.8.13-gentoo
mongodb:2.4.6
host1:172.16.62.131
host2: 172.16.62.137
host3: 172.16.62.138
1:查看Portage树中包含的mongodb
# ls /usr/portage/dev-db/mongodb/ ChangeLog Manifest files metadata.xml mongodb-2.2.6.ebuild mongodb-2.4.6.ebuild
2:package.keywords它列出了还未被确认适合你的系统或架构,但是你希望能安装的软件包
# vim /etc/portage/package.keywords/default #添加如下行: =dev-db/mongodb-2.4.6 ~amd64
3:安装很简单
# emerge -av dev-db/mongodb PS:
如果你对gentoo不熟悉,可以查看gentoo手册,了解相关详情:
http://www.gentoo.org/doc/zh_cn/handbook/handbook-amd64.xml?full=1
如果用的是其他系统,安装请参考:
http://docs.mongodb.org/manual/installation/
> 切入正题:Mongodb Replica set
> 简介:
A replica set in MongoDB is a group of mongod processes that maintain the same data set,其提供了冗余和增加数据可用性。另外在某些情况下,您可以使用复制来提高读取能力。mongodb通过记录所有primary的更改到oplog中,来实现主从的数据一致性。更多详情:http://docs.mongodb.org/manual/replication/
最小的一个Replica set 架构是有三名成员:
1> 可以是一个primary节点,两个secondary节点(均可通过投票成为primary);
2> 也可以是一个primary节点,一个secondary节点,一个arbiter节点(仅在选举中投票,不保存数据),下面的配置就是针对此种方式。
> Replica set 配置:
1:建立一个mongo的配置文件(文件名随意,三台server均需操作, 注意修改
# vim /etc/mongo.conf #添加如下行: dbpath=/var/lib/mongodb #数据存放目录
logpath=/var/log/mongodb/mongo.log #日志文件路径,这个不是目录哦
pidfilepath=/var/run/mongo.pid #进程文件
directoryperdb=true #每个数据库单独存放在一个目录
logappend=true #已追加的方式记录日志
replSet=reptest #Replicate set 的名字(随意)
bind_ip=172.16.62.137,127.0.0.1 #监听地址
port=27017 #监听端口
oplogSize=1000 #oplog文件的大小,单位M,默认为磁盘剩余的5%,后期修改较为麻烦,建议根据业务读写比例,做合理修改
fork=true #后台运行
更多详情查看mongod的帮助:http://docs.mongodb.org/manual/reference/program/mongod/ 或mongod --help
2:启动mongod (三台server均操作)
# mongod -f /etc/mongo.conf
# netstat -tunlp | grep mongo
3:连接到其中一台server上,配置(每台都可以)
# mongo 4:配置:
> config = { _id : "reptest", members : [ {_id : 0, host : '172.16.62.137:27017', priority : 2}, {_id : 1, host : '172.16.62.138:27017', priority : 1}, {_id : 2, host : '172.16.62.131:27017', arbiterOnly: true}, ] } # _id : "reptest" :Replicate set的名字,须和配置文件保持一致
# members : 包含一个数组,用一些字段描述成员的配置
# _id :0 标示符
# host: 主机:端口号
# priority: 优先级,默认为:1
# arbiterOnly: 指定为仲裁节点默认:false
更多配置详情 http://docs.mongodb.org/manual/reference/replica-configuration/
5:使配置生效
> rs.initiate(config) 6:查询状态
reptest:PRIMARY> rs.status()
{
"set" : "reptest",
"date" : ISODate("2013-10-11T03:05:50Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "172.16.62.137:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 35,
"optime" : Timestamp(1381378514, 1),
"optimeDate" : ISODate("2013-10-10T04:15:14Z"),
"self" : true
},
{
"_id" : 1,
"name" : "172.16.62.138:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 25,
"optime" : Timestamp(1381378514, 1),
"optimeDate" : ISODate("2013-10-10T04:15:14Z"),
"lastHeartbeat" : ISODate("2013-10-11T03:05:49Z"),
"lastHeartbeatRecv" : ISODate("2013-10-11T03:05:49Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "syncing to: 172.16.62.137:27017",
"syncingTo" : "172.16.62.137:27017"
},
{
"_id" : 2,
"name" : "172.16.62.131:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 17,
"lastHeartbeat" : ISODate("2013-10-11T03:05:49Z"),
"lastHeartbeatRecv" : ISODate("2013-10-11T03:05:49Z"),
"pingMs" : 0
}
],
"ok" : 1
}
以上说明配置已生效,在PRIMARY节点插入数据试试看把。另:mongodb还支持 Master Slave Replication(配置简单,提供了冗余,但不能实现高可用,官网已不推荐:http://docs.mongodb.org/manual/core/master-slave/)以及Sharding(针对大数据量进行分片,后续会涉及到http://docs.mongodb.org/manual/sharding/)
|
|