MongoDB的环境主要包括StandAlone,Replication和Sharding。
StandAlone:单机环境,一般开发测试的时候用。Replication:主从结构,一个Primary,多个Secondary,可能会有Arbitry。 Primary挂掉之后,会选举出一个Secondary作为Primary,与zookeeper类似。Arbitry上面不存数据,只是为了凑数。选举算法要求节点数必须是奇数个,如果Primary+Secondary不是奇数个,就要用Arbitry凑数。写数据只能在Primary,读数据默认也在Primary,可以配置成从Secondary读,可以选最近的节点。数据在Primary上写成功之后,会将操作记录在oplog中,Secondary将oplog拷贝过去,然后照着操作一遍,就有数据了。Primary和Secondary上面的数据保证最终一致性,可以为写操作配置write concern,有几个级别:在Primary上写完就认为写成功;写到oplog后认为写成功;写到一个/多个/某个/某几个Secondary之后认为写成功,等等。 Sharding:share nothing的结构,每台机器只存一部分数据。mongod服务器存数据,mongos服务器负责路由读写请求,元数据存在config 数据库 中。因为数据量和机器量的原因,项目最终用了一个Primary,一个Secondary,一个Arbitry。我自己的开发环境是Ubuntu,测试环境是CentOS。安装的是64位的MongoDB。
Ubuntu上的安装
1
|
sudo apt-get install mongodb-10gen
|
CentOS上的安装
配置yum源,创建文件:/etc/yum.repos.d/mongodb.repo
1
2
3
4
5
|
[mongodb]
name
=MongoDB Repository
gpgcheck=0
enabled=1
|
安装命令:
1
|
yum install mongo-10gen mongo-10gen-server
|
配置
每台机器上面的配置文件/etc/mongod.conf修改成下面的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#数据库文件所在位置(默认)
dbpath=/var/lib/mongo
#日志所在位置(默认)
logpath=/var/log/mongo/mongod.log
#pid所在位置(默认)
pidfilepath = /var/run/mongodb/mongod.pid
#keyFile所在位置,生成方式在后面(添加)
keyFile=/var/lib/mongo/
key
#端口(默认)
port=27017
|