Mongodb集群搭建及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上的虚拟机)

安装步骤见安装文档,注意先不要更改用户验证方式。

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上的mongodb 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上进行以下操作;

(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:

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

     cd/home/admin/mongodb3051/data

     openssl rand –base64753 > keyFile

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

     chmod 600keyFile

(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参数:

(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.91.27:27017"
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>

 

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

public DB
getMongoDB() {

    if (mongoDB ==
null) {

      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()));

        mongoDB = new
MongoClient(sends,mongoCredentialList)
.getDB("admin");

      } catch (Exception
e) {

        throw
new
RuntimeException("连接MongoDB数据库错误",
e);

      }

    }

    return
mongoDB;

  }

时间: 2024-11-02 06:45:42

Mongodb集群搭建及spring和java连接配置记录的相关文章

Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍_MongoDB

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.

MongoDB集群搭建及Sharding的实现思路

http://www.aliyun.com/zixun/aggregation/13461.html">MongoDB集群搭建 MongoDB的复制集群类型: ·主从模式(master/slave) ·副本集模式(replica set) 副本及模式至少3个节点(一主二从),从节点负责复制主节点的oplog到本地并且应用到本地从而实现冗余. (·arbiter:仅参与选举,但不持有任何数据 ·0优先级:可以触发选举,但是不能被选举成为主节点 ·可以使用repiset来定义集群名称) 1.编

Mongodb集群搭建的三种方式

 Mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式.关于Mongodb的特点,这里就不多介绍了,大家可以去看看官方说明:http://docs.mongodb.org/manual/          今天主要来说说Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slaver.这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档.OS是Ubuntu_x64系统,客

mongodb集群搭建 副本集内部机制原理

副本集故障转移,主节点是如何选举的?能否手动干涉下架某一台主节点. 官方说副本集数量最好是奇数,为什么? mongodb副本集是如何同步的?如果同步不及时会出现什么情况?会不会出现不一致性? mongodb的故障转移会不会无故自动发生?什么条件会触发?频繁触发可能会带来系统负载加重? Bully算法 mongodb副本集故障转移功能得益于它的选举机制.选举机制采用了Bully算法,可以很方便从分布式节点中选出主节点.一个分布式集群架构中一般都有一个所谓的主节点,可以有很多用途,比如缓存机器节点元

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端口冲突,这里设

Hadoop 三台主机 集群搭建 详解(测试)

Hadoop 三台主机 集群搭建 详解 学习更多,请访问系列文章: 1. VMware Redhat网络配置 2. Hadoop 三台主机 集群搭建 详解 3. Windows 下配置 Eclipse 连接 Hadoop 开发环境 部署环境: OS:Redhat 5.5 Enterprise JDK:jdk1.6.0_32 Hadoop:Hadoop-0.20.2 VMWare:7.0 节点安排及网络拓扑: 节点类型 节点IP 节点hostname master节点 192.168.40.5 m

搭建高可用的MongoDB集群

MongoDB公司原名10gen,创立于2007年,在2013年收到一笔2.31亿美元的融资后,公司市值评估已增至10亿美元级别,这个高度是知名开源公司Red Hat(创建于1993年)20年的奋斗成果. 高性能.易扩展一直是MongoDB的立足之本,同时规范的文档和接口更让其深受用户喜爱,这一点从分析DB-Engines的得分结果不难看出--仅仅1年时间,MongoDB就完成了第7名到第五名的提升,得分就从124分上升至214分,上升值是第四名PotgreSQL的两倍,同时当下与Postgre

搭建mongodb集群(副本集+分片)

搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集+分片)的例子... 准备四台机器,分别是bluejoe1,bluejoe2,bluejoe3,以及bluejoe0 副本集及分片策略确定如下:   将创建3个副本集,命名为shard1,shard2,shard3: 以上3个副本集作为3个分片: 每个副本集包含3个副本(主.辅1.辅2): 副本分开

MongoDB 3.4 副本集分片集群搭建

MongoDB 3.4 副本集分片集群搭建 Author:Jeffrey Jhon Timed:2017-10-16 16:56:24 Company:hangzhoutianque 案例主要参考,然后细化了下安装部署过程,并且贴出详细的配置信息,以便后续翻阅查询. 官方文档:Sharding - MongoDB Manual 3.4 一.测试环境 操作体统:VMware + CentOS7 + 静态IP mongodb版本:mongodb-3.4.4 二.布局预览 app1 app2 app3