Mongodb是时下流行的NoSql数据库,它的存储方式是文栏式存储,并不是Key-Value 形式。关于Mongodb的特点,这里就不多介绍了,大家可以去看看官方说明: HYPERLINK "http://docs.rn" http://docs.rn on /ma nual/
今天主要来说说Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slavero这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此 类推或者查看官方文档。OS是Ubuntu_x64系统,客八端用的是Java客户端。Mongodb 版本是 mongodb-linux-x86_64-2.2.2.tgz
Replica Set
中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的。其实简 单来说就是集群当屮包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提 供的前提就是数据需要和主节点一致。如下图:
Z\
Mongodb Client
Mongodb(M)…一 Mongodb⑸-— Mongodb(A)
) I丿V/
MachinelMachine2Machine3
Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备 节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。
默认设置下,主节点捉供所有增删查改服务,备节点不提供任何服务。但是可以通过 设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请 求自动转到备节点上。这个设置叫做Read Preference Modes,同时Java客户端提供了简 单的配置方式,可以不必直接对数据库进行操作。
仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点 在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点, 但是仍然需要一个仲裁节点來提升备节点级别。我开始也不相信必须要有仲裁节点,但是自 己也试过没仲裁节点的话,主节点挂了备节点还是备节点,所以咱们还是需要它的。 介绍完了集群方案,那么现在就开始搭建了。
1.建立数据文件夹
一般情况下不会把数据目录建立在mongodb的解压目录下,不过这里方便起见,就建在 mongodb解压目录下吧。
[plain] view plaincopy
mkdir -p /mongodb/data/master
mkdir ?p /mongodb/data/slaver
mkdir -p /mongodb/data/arbiter
#三个目录分别对应主,备,仲裁节点
2建立配置文件
rti于配置比较多,所以我们将配置写到文件里。
[plain] view plaincopy
#master.conf
dbpath二/mongodb/data/master
? logpath=/mongodb/log/masten?log
? pidfilepath=/mongodb/master?pid 15 ? directoryperdb二true
logappend=true
replSet=testrs
bind_ip=10?10.148?130
]9.port=27017
oplogSize=10000
fork=true
noprealloc=true
lain] view plaincopy
1.#slaver.conf2.34.5?
1.
#slaver.conf
2.
3
4.
5?
6.
7.
8.
9.
dbpath=/mongodb/data/slaver logpath二/mongodb/log/slaver.log pidfilepath=/mongodb/slaver?pid directOTyperdb=true logappend=true replSet二testrs
bind_ip=31 port=27017
oplogSize=10000
fork=true
[plain] view plaincopy
#arbiter.conf
| 2. dbpath=/mongodb/data/arbiter
13 ? logpath二/mongodb/log/arbiter?log
| 4. pidfilepath=/mongodb/arbiter?pid
? directoryperdb=true
logappend二true
replSet二testrs
8 ? bind_ip=10?10.148.132
port=27017
oplogSize=10000
fork=true
noprealloc=t