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 | #master.conf |
备份节点:vi /etc/mongodb_slave.conf
1 | #slave.conf |
仲裁点:vi /etc/mongodb_arbiter.conf
1 | #arbiter.conf |
备注:
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 | mongod -f /etc/mongodb_master.conf |
4.集群配置
连接mongoDB:
mongo 192.168.88.129:27016
在主节点进行配置:
1 | 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}] }; |
说明:
cfg名字可选,只要跟mongodb参数不冲突,_id为Replica Set名字,members里面的优先级priority值高的为主节点,对于仲裁点一定要加上arbiterOnly:true,否则主备模式不生效
priority表示优先级别,数值越大,表示是主节点
arbiterOnly:true表示仲裁节点
1 | 使集群cfg配置生效: rs.initiate(cfg) |
“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 | MongoClient mongoClient = new MongoClient( |
生成环境连接(读写偏向)配置参考: