Mongodb3.0.5副本集搭建及spring和java连接副本集配置

2024-04-28 07:18

本文主要是介绍Mongodb3.0.5副本集搭建及spring和java连接副本集配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是去年写的一篇文档,最近突然发现并没有发不出来,因此现在补上,希望能对某些朋友有所帮助。因为当时记录时没有截图,因此这里看起来可能就比较单调。

 

一、基本环境:

mongdb3.0.5数据库

spring-data-mongodb-1.7.2.jar

mongo-java-driver-3.0.2.jar

linux-redhat6.3

tomcat7

 

二、搭建mongodb副本集:

1、  分别在三台linux系统机上安装mongodb,(为避免和机器上原有的mongodb端口冲突,这里设为57017):

192.168.0.160

192.168.0.211(192.168.0.33上的虚拟机)

192.168.0.213(192.168.0.4上的虚拟机)

每个mongodb的安装这里就不细说了,可以参考我的安装方面的文档,注意先不要更改用户验证方式。另外,这里如果没有三台机,也可以只用一台机开三个端口,同时准备三个数据存储目录。

 

2、  以副本集的方式启动三个mongodb

只是在单机mongodb启动的基础上加入副本集参数—replSet,例如启动160的:

 

/home/admin/mongodb3051/mongodb305/bin/mongod –f  /home/admin/mongo3051/conf/mongodb.conf  --replSet reptest

 

 

 

其中,reptest是指定的副本集名称,另外两台机也也要和这个一样。如:

 

/mongodb3051/mongodb305/bin/mongod –f /mongodb3051/conf/mongodb.conf  --replSet repTest

 

 

3、  在任意一台机上配置副本集,这里在160上配置:

(1)、进入160上的mongo sehll(数据操作界面):

 

/home/admin/mongodb3051/mongodb305/bin/mongo –port 57017

 

 

 

(2)、切换到admin数据库:

 

use admin

 

 

(3)、配置副本集:

 

config={_id:”reptest”,members:[{_id:0,host:”192.168.0.160:57017”},{_id:1,host:”192.168.0.211:57017”},{_id:,host:”192.168.0.213:57017”}]}

 

 

 

(4)、加载副本集配置文件:

 

rs.initiate(config)

 

 

(5)、查看副本集状态:

 

rs.status()

 

   正常情况下可以看到160会是主服务器,显示PRIMARY,如果是,就直接进行以下操作,如果不是,就切换到PRIMARY上进行以下操作(换到另一个mongo);

 

(6)、增加用户:

 

db.createUser({“user”:”admin”,”pwd”:”admin”,”roles”:[“root”]})

 

 

(7)、更改用户验证方式:  

 

varschema=db.system.version.findOne({“_id”:”authSchema”})
schema.currentVersion=3
db.system.version.save(schema)

 

 

 

(8)、删除用户:

 

db.dropUser(“admin”)

 

 

(9)、重新建立用户(系统中和上边建立的用户验证方式不一样):

 

 db.createUser({“user”:”admin”,”pwd”:”admin”,”roles”:[“root”]})

 

 

 

(10)、关闭三个mongodb:

 

db.shutDownServer()或者kill命令

 

 

 

(11)、在160的数据库的data目录中建立keyFile文件:     

 

cd /home/admin/mongodb3051/data
openssl  rand  –base64 753  >  keyFile

 

 

(12)、给keyFile文件设置600权限(必须设置600权限):

 

chmod 600 keyFile

 

 

(13)、把这个keyFile文件上传到另外两台机上mongodb的data目录中:     

 

scp –r keyFile root@192.168.0.211/mongodb3051/data
scp –r keyFile root@192.168.0.213/mongodb3051/data

 

 

(14)、在mongodb.conf文件中加入keyFile,例如160:

 

 keyFile=/home/admin/mongodb3051/data/keyFile

 

 

(15)、重新启动mongodb,使用replSet和auth参数:

 

/home/admin/mongodb3051/mongodb305/bin/mongod –f /home/admin/mongo3051/conf/mongodb.conf --replSet reptest  --auth

 

 

(16)、在priority中设置副本集成员的优先级,给160设置最高优先级,优先级默认都是1:   

 

 config=rs.conf()config.members[0].priority=2rs.reconfig(config)

 

 这样的话,只要160的mongodb是开着的,那么主服务器就会是160

 

三、Spring中连接副本集的配置:

 

<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:mongo="http://www.springframework.org/schema/data/mongo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/data/mongohttp://www.springframework.org/schema/data/mongo/spring-mongo.xsd"><!-- Factory bean that creates the Mongoinstance --><mongo:mongo-client replica-set="192.168.0.160:57017" credentials="admin:admin@admin" id="mongo"> <mongo:client-options write-concern="SAFE" connections-per-host="100"threads-allowed-to-block-for-connection-multiplier="50"/> </mongo:mongo-client> <mongo:db-factory  id="mongoDbFactory"dbname="admin" mongo-ref="mongo"/> <bean id="mongoTemplate"class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> </bean>  
</beans>

 

只需要配置一个ip,就会自动切换。用户验证格式:username:password@dbname。

 

四、java中连接副本集的代码:

 

public DB getMongoDB() {try {ServerAddress sa = new ServerAddress("192.168.0.160", 57017);ServerAddress sa1 = new ServerAddress("192.168.0.211", 57017);ServerAddress sa2 = new ServerAddress("192.168.0.213", 57017);List<ServerAddress> sends = new ArrayList<ServerAddress>();sends.add(sa);sends.add(sa1);sends.add(sa2);List<MongoCredential> mongoCredentialList = new ArrayList<MongoCredential>();mongoCredentialList.add(MongoCredential.createMongoCRCredential("admin", "admin","admin".toCharArray()));DB mongoDB = new MongoClient(sends,mongoCredentialList).getDB("admin");} catch (Exception e) {throw new RuntimeException("连接MongoDB数据库错误", e);}return mongoDB;}

 

 

用户验证格式是:username,dbname,password
 

这篇关于Mongodb3.0.5副本集搭建及spring和java连接副本集配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942622

相关文章

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推