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上的虚拟机)
会是主服务器,显示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
权限):
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=2 rs.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/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://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连接副本集配置的更多相关文章
- Mongodb集群搭建及spring和java连接配置记录
一.基本环境: mongdb3.0.5数据库 spring-data-mongodb-1.7.2.jar mongo-java-driver-3.0.2.jar linux-redhat6.3 tom ...
- Hadoop(五)搭建Hadoop客户端与Java访问HDFS集群
阅读目录(Content) 一.Hadoop客户端配置 二.Java访问HDFS集群 2.1.HDFS的Java访问接口 2.2.Java访问HDFS主要编程步骤 2.3.使用FileSystem A ...
- 通过jedis连接redis单机成功,使用redis客户端可以连接集群,但使用JedisCluster连接redis集群一直报Could not get a resource from the pool
一,问题描述: (如题目)通过jedis连接redis单机成功,使用JedisCluster连接redis集群一直报Could not get a resource from the pool 但是使 ...
- Java连接Elasticsearch集群
package cn.test; import java.net.InetAddress; import java.net.UnknownHostException; import org.elast ...
- Java 连接MongoDB集群的几种方式
先决条件 先运行mongodb肯定是必须的,然后导入以下包: import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; im ...
- Java连接redis集群操作存储、删除以及获取值
pom文件添加: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> &l ...
- spring boot JedisCluster连接redis集群配置
配置文件 配置类 构造的时候, 可以看一下, 只有Set<HostAndPort> 参数是必须的 做了一层封装, 更方便使用 结果
- java 连接 redis集群时报错:Could not get a resource from the pool
由于弄这个的时候浪费了太多的时间,所以才记录下这个错,给大伙参考下 检查了一下,配置啥的都没问题的,但在redis集群机器上就可以,错误如下: Exception in thread "ma ...
- ElasticSearch(四):使用Java连接ElasticSearch集群
public class ESIndexMapping { private static String host="192.168.56.3"; // 服务器地址 private ...
随机推荐
- Java在已存在的pdf文件中生成文字和图片--基础
自我总结,有什么不足之处请告知,感激不尽!下一次总结pdf模板映射生成报表(应对多变的pdf报表需求,数据提供和报表生成解耦). 目的:在给定的pdf模板上生成报表,就需要知道最基本的操作:文字添加, ...
- 初码-Azure系列-存储队列的使用与一个Azure小工具(蓝天助手)
初码Azure系列文章目录 将消息队列技术模型简化,并打造成更适合互联网+与敏捷开发的云服务模式,好像已经是行业趋势,阿里云也在推荐使用消息服务(HTTP协议为主)而来替代消息队列(TCP协议.MQT ...
- 手工搭建基于ABP的框架 - 工作单元以及事务管理
一个业务功能往往不只由一次数据库请求(或者服务调用)实现.为了功能的完整性,我们希望如果该功能执行一半时出错,则撤销前面已执行的改动.在数据库层面上,事务管理实现了这种完整性需求.在ABP中,一个完整 ...
- linux中sed在指定字符前后添加内容
假设文档内容如下: [root@localhost ~]# cat /tmp/input.txt null 000011112222 test 要求:在1111之前添加AAA,方法如下: sed ...
- 洛谷 [P1963] [NOI2009] 变换序列
这是一道二分图匹配的题 先%dalao博客 建图并没有什么难的,但是关键在于如何使字典序最小. 一个很显然的想法是先求出一个完美匹配,然后从x集合的第一个元素开始,如果该元素匹配的较小的一个,那么继续 ...
- 使用angular/react/vue实现相同的面试题组件
面试题要求如下所示 1.angular: <!DOCTYPE html><html lang="en"><head> <meta char ...
- DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)
本节详细分析两个 k8s 自己的 DaemonSet:kube-flannel-ds 和 kube-proxy . kube-flannel-ds 下面我们通过分析 kube-flannel-ds 来 ...
- 小甲鱼OD学习第3讲
这次我们的任务是破解这个过期的软件,效果如图所示 我们通过阅读代码,知道这个程序的执行流程如图中注释所示 观看下图注释所示 这是失败的提示代码 这是成功的提示代码 最后我们可以得出结论,成功破解软件的 ...
- 在C#中“?”有三种用法
在C#中“?”有三种用法. 1.可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空,例如:string str=null;是正确的.int i=null:编译器将 ...
- xml对象序列化
public static class XSerializer { /// <summary> /// 将对象序列化为xml字符串 /// </summary> /// < ...