MongoDB集群负载均衡部署帮助文档
1:安装mongodb单个服务
1.1准备软件列表
软件 |
说明 |
mongodb-linux-x86_64-3.0.6.tgz |
mongodb安装文件 |
【sept1】安装mongodb环境
安装mongodb环境:
#cd /usr/tools/ #进入目录
#tar –zxvf mongodb-linux-x86_64-3.0.6.tgz /usr/local/ #解压目录到local下
#mv mongodb-linux-x86_64-3.0.6 mongodb #重命名
【sept2】配置mongodb.conf文件
在mongodb下新建data、logs、etc文件夹
#cd /usr/local/mongodb/ #进入目录
#mkdir data
#mkdir logs
#mkdir etc
#cd data
#mkdir db
在etc文件夹下新建mongodb.conf文件
文件mongodb.conf:
dbpath=/usr/local/mongodb/data/db/27111/ #db数据库路径
logpath=/usr/local/mongodb/logs/27111/mongodb.log #日志路径
port=27111 #端口
bind_ip = 192.168.3.180 #服务地址
replSet = child/192.168.3.180:27112 #设定同伴 child为集群名称
fork=true
journal=false
storageEngine=mmapv1
rest=true
httpinterface=true
【sept3】启动mongo服务
配置环境变量:
#vi /etc/profile #编辑文件
在最后加上:
PATH=$PATH:/usr/local/mongodb/bin
export PATH
#source /etc/profile #使文件生效
启动服务:
#mongod –f /usr/local/mongodb/etc/mongodb.conf
连接数据库:
#mongo 192.168.3.180:27017
停止服务:
#ps –ef|grep mongo #找到进程id
#kill -2 进程id #不要使用kill -9 结束进程,停止服务
2:mongodb副本集的搭建
2.1mongodb准备副本集环境
【sept1】创建目录文件
注意配置:
路径:/usr/local/mongodb/etc/mongodb.conf: (端口27111)
dbpath = /usr/local/mongodb/data/bin/27111/ #主数据库地址
logpath=/usr/local/mongodb/logs/27111/mongodb.log
port = 27111 #主数据库端口号
bind_ip = 192.168.3.180 #主数据库所在服务器
replSet = child/192.168.3.180:27112 #设定同伴 child为集群名称
路径:/usr/local/mongodb/etc/mongodb.conf: (端口27112)
dbpath = /usr/local/mongodb/data/bin/27112/ #主数据库地址
logpath=/usr/local/mongodb/logs/27112/mongodb.log
port = 27112 #主数据库端口号
bind_ip = 192.168.3.180 #主数据库所在服务器
replSet = child/192.168.3.180:27113 #设定同伴 child为集群名称
路径:/usr/local/mongodb/etc/mongodb.conf: (端口27113)
dbpath = /usr/local/mongodb/data/bin/27113/ #主数据库地址
logpath=/usr/local/mongodb/logs/27113/mongodb.log
port = 27113 #主数据库端口号
bind_ip = 192.168.3.180 #主数据库所在服务器
replSet = child/192.168.3.180:27111 #设定同伴 child为集群名称
【sept2】在180服务器安装配置启动服务
#cd /usr/local/mongodb/bin #进入目录;
#ls #查看
启动服务
#mongod –f /usr/local/mongodb/etc/27111/mongodb.conf #启动服务27111
# mongod –f /usr/local/mongodb/etc/27112/mongodb.conf #启动服务27112
# mongod –f /usr/local/mongodb/etc/27113/mongodb.conf #启动服务27113
#ps –ef|grep redis #查看mongo服务
#netstat –tnlp|grep mongod #查看mongo服务
【sept3】在180服务器配置副本集
#cd /usr/local/redis/bin #进入目录
#ls
#ps –ef|grep mongo #查看mongo服务
#netstat –tnlp|grep mongod #查看mongo服务
#mongo 192.168.3.180:27111 #连接
执行如下命令:
查看副本集:
3:mongodb集群整合spring
3.1:spring-mongodb.xml配置
<mongo:mongo-client replica-set="${mongo.host}:${mongo.port}" credentials="${mongo.user}:${mongo.pwd}@{mongo.defaultDbName}" id="mongoClient">
<mongo:client-options
write-concern="${mongo.write-concern}"
connections-per-host="${mongo.connectionsPerHost}"
min-connections-per-host="${mongo.minConnectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}"
description="${mongo.description}"
max-connection-idle-time="${mongo.maxConnectionIdleTime}"
max-connection-life-time="${mongo.maxConnectionLifeTime}"
heartbeat-socket-timeout="${mongo.heartbeatSocketTimeout}"
heartbeat-connect-timeout="${mongo.heartbeatConnectTimeout}"
min-heartbeat-frequency="${mongo.minHeartbeatFrequency}"
heartbeat-frequency="${mongo.heartbeatFrequency}"
/>
</mongo:mongo-client>
<mongo:db-factory id="mongoDbFactory"
dbname="${mongo.defaultDbName}"
mongo-ref="mongoClient"/>
<bean id="mappingContext"
class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />
<bean id="defaultMongoTypeMapper"
class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
<constructor-arg name="typeKey">
<null />
</constructor-arg>
</bean>
<!-- collection的映射 -->
<bean id="mappingMongoConverter"
class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mappingContext" ref="mappingContext" />
<property name="typeMapper" ref="defaultMongoTypeMapper" />
</bean>
<!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
</bean>
<bean id="gridFsTemplate" class="org.springframework.data.mongodb.gridfs.GridFsTemplate">
<constructor-arg ref="mongoDbFactory" />
<constructor-arg ref="mappingMongoConverter" />
<constructor-arg name="bucket" value="casePicture" />
</bean>
3.2集群测试方法
//测试集群
public static void testMongoDb() {
try {
System.out.println("================测试开始======================");
// 连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
// ServerAddress()两个参数分别为 服务器地址 和 端口
// ServerAddress serverAddress = new ServerAddress("192.168.3.176", 27017);
ServerAddress serverAddress1 = new ServerAddress("192.168.3.180", 27111);
ServerAddress serverAddress2 = new ServerAddress("192.168.3.180", 27112);
ServerAddress serverAddress3 = new ServerAddress("192.168.3.180", 27113);
ServerAddress serverAddress4 = new ServerAddress("192.168.3.176", 27017);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress1);
addrs.add(serverAddress2);
addrs.add(serverAddress3);
addrs.add(serverAddress4);
MongoCredential credential = MongoCredential.createScramSha1Credential("admin", "jwzh",
"123456".toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
// 通过连接认证获取MongoDB连接
MongoClient mongoClient = new MongoClient(addrs, credentials);
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("jwzh");
System.out.println("Connect to database successfully");
// mongoDatabase.createCollection("casePicture");
// System.out.println("集合创建成功");
MongoCollection<Document> collection = mongoDatabase.getCollection("casePicture");
System.out.println("集合 test 选择成功");
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while (mongoCursor.hasNext()) {
System.out.println("mongoCursor.next()" + mongoCursor.next() + "=============");
}
// 取得数据库对象
DB db = mongoClient.getDB("jwzh");
GridFS gridFS = new GridFS(db, "casePicture");
File file = new File("d:/ncurses-5.6.tar_27111.gz");
FileInputStream fileInputStream = new FileInputStream(file);
// 创建gridFS文件数据流
GridFSInputFile createFile = gridFS.createFile(fileInputStream);
// 设置文件属性
createFile.put("policeId", "8e123ee6922b4a91be400c7bfd3eb13a");
createFile.put("filename", "d:/ncurses-5.6.tar_27111.gz");
createFile.put("contentType", "zip");
createFile.save();
/*
* 3、根据id查询上传文件
*/
GridFSDBFile findOne = gridFS.findOne(new BasicDBObject("_id", createFile.getId()));
// System.out.println(findOne);
/*
* 4、查询所有文件列表 DBCursor 数据库游标
*/
DBCursor fileList = gridFS.getFileList();
while (fileList.hasNext()) {
System.out.println("fileList.next()" + fileList.next());
}
List<GridFSDBFile> list = gridFS.find(new BasicDBObject("_id", createFile.getId()));
/*
* 5、 删除文件
*/
// gridFS.remove(new BasicDBObject("_id",createFile.getId()));
mongoClient.close();
System.out.println("================测试结束===================");
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
下载地址:https://download.****.net/download/wenjie4892543/10451077