MongoDB集群搭建手册

1.安装

mongodb的集群搭建方式主要有三种,主从模式,Replica set模式,sharding模式, 三种模式各有优劣,适用于不同的场合,属Replica set应用最为广泛,主从模式现在用的较少,sharding模式最为完备,但配置维护较为复杂。本文我们来看下Replica Set模式的搭建方法。

下载:

https://www.mongodb.com/download-center/community

安装:server,shell

1
yum install -y ***.rpm

2.配置

创建数据目录:

mkdir -p data/mongodb/{master,slave,arbiter}

创建配置文件:

主节点:vi /etc/mongodb_master.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#master.conf
dbpath=/opt/data/mongodb/master
logpath=/opt/mongodb/master.log
pidfilepath=/opt/mongodb/master.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.88.129
port=27016
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

备份节点:vi /etc/mongodb_slave.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#slave.conf
dbpath=/opt/data/mongodb/slave
logpath=/opt/mongodb/slave.log
pidfilepath=/opt/mongodb/slave.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.88.129
port=27018
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

仲裁点:vi /etc/mongodb_arbiter.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#arbiter.conf
dbpath=/opt/data/mongodb/arbiter
logpath=/opt/mongodb/arbiter.log
pidfilepath=/opt/mongodb/arbiter.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.88.129
port=27019
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

备注:
keyFile和auth选项要在集群配置好后,并且添加了验证用户后在启用
参数说明:
dbpath:存放数据目录
logpath:日志数据目录
pidfilepath:pid文件
keyFile:节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
directoryperdb:数据库是否分目录存放
logappend:日志追加方式存放
replSet:Replica Set的名字
bind_ip:mongodb绑定的ip地址
port:端口
auth:是否开启验证
oplogSize:设置oplog的大小(MB)
fork:守护进程运行,创建进程
moprealloc:是否禁用数据文件预分配(往往影响性能)
maxConns:最大连接数,默认2000

3.启动mongodb

1
2
3
mongod -f /etc/mongodb_master.conf
mongod -f /etc/mongodb_slave.conf
mongod -f /etc/mongodb_arbiter.conf

4.集群配置

连接mongoDB:

mongo 192.168.88.129:27016

在主节点进行配置:

1
2
cfg={ _id:"testdb", members:[ {_id:0,host:'192.168.88.129:27016',priority:2}, {_id:1,host:'192.168.88.129:27018',priority:1}, {_id:2,host:'192.168.88.129:27019',arbiterOnly:true}] };
rs.initiate(cfg)

说明:
cfg名字可选,只要跟mongodb参数不冲突,_id为Replica Set名字,members里面的优先级priority值高的为主节点,对于仲裁点一定要加上arbiterOnly:true,否则主备模式不生效
priority表示优先级别,数值越大,表示是主节点
arbiterOnly:true表示仲裁节点

1
2
使集群cfg配置生效: rs.initiate(cfg) 
查看是否生效: rs.status()

“stateStr”: PRIMARY表示主节点, SECONDARY表示从节点,ARBITER表示仲裁节点
添加节点命令
添加secondary:rs.add({host: “192.168.255.141:27019”, priority: 1 })
添加仲裁点:rs.addArb(“192.168.255.142:27019”)
移除节点:rs.remove({host: “192.168.255.141:27019”})

5.数据测试

插入数据:

db.conditon.insert({name:”tom”,pwd:”123”,sex:”m”})

查询数据:

db.getCollection(“conditon”).find({})

6.客户端连接

连接到副本集

MongoDB将自动发现主要和副本。You can specify the members using the MongoClientURI connection string:

指定两个副本集:

1
MongoClient mongoClient = new MongoClient( new MongoClientURI("mongodb://host1:27017,host2:27017,host3:27017"));​

至少有一个副本集和副本集选项的成员:

1
MongoClient mongoClient = new MongoClient( new MongoClientURI( "mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet"));

你可以使用ServerAddress指定副本集中的所有成员.

1
2
3
4
MongoClient mongoClient = new MongoClient(
Arrays.asList(new ServerAddress("host1", 27017),
new ServerAddress("host2", 27017),
new ServerAddress("host3", 27017)));

生成环境连接(读写偏向)配置参考:

https://www.cnblogs.com/jycboy/p/10077080.html