1. 程式人生 > >Mongodb3.0.5副本集搭建及spring和java連線副本集配置

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 [email protected]/mongodb3051/data
scp –r keyFile [email protected]/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:[email protected]" 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:[email protected]

四、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副本搭建springjava連線副本配置

這是去年寫的一篇文件,最近突然發現並沒有發不出來,因此現在補上,希望能對某些朋友有所幫助。因為當時記錄時沒有截圖,因此這裡看起來可能就比較單調。一、基本環境:mongdb3.0.5資料庫spring-data-mongodb-1.7.2.jarmongo-java-drive

linux下mongodb副本搭建java操作示例

mongodb副本集搭建及java操作示例 下載加壓安裝包 下載: 解壓: tar -zxvf mongodb-linux-x86_64-3.0.6.tgz 目錄重新命名: mv mongodb-linux-x86_64-3.0.6/ /usr/lo

02: LVS簡介 、 LVS-NAT群 、 LVS-DR

分類 dfs elinks -h 本地yum源 -i _for proc 模式 操作系統 rhel6 配置本地yum源service iptables stop ;chkconfig iptables offsetenforce 0 ip 地址 要求 eth0192

CentOS-7 ,yum倉庫搭建ftphttp配置

yum ftp http 掛載光盤,光盤放入光驅# mkdir /media/cdrom //創建掛載目錄,個人習慣# mount /dev/cdrom /media/cdrom/ //掛載ls /media/cdrom/ //查看是否掛載成功 安裝 vsftprpm -ivh /med

Spring java 反射自定義註解的問題解決!!

我想做一個將  使用者操作記錄儲存到資料庫的功能,利用java 的反射和自定義annotation 來實現,具體程式碼如下: 自定義annotation  類: package com.util; import java.lang.annotation.Documented;

SSH中 整合springproxool 連線

[摘要:比來做的一個專案中應用到了毗鄰池技巧,大概我們人人比擬認識的開源毗鄰池有dbcp,c3p0,proxool。對那三種毗鄰池來講,從機能戰失足率來講,proxool輕微比前兩種好些。本日我首要簡略] 最近做的一個專案中運用到了連線池技術,可能我們大家比較熟悉的開源連線池有dbcp,

MapReduce實現兩表的Join--原理pythonjava程式碼實現

用Hive一句話搞定的,但是有時必須要用mapreduce 方法介紹 1. 概述 在傳統資料庫(如:MYSQL)中,JOIN操作是非常常見且非常耗時的。而在HADOOP中進行JOIN操作,同樣常見且耗時,由於Hadoop的獨特設計思想,當進行JOIN操作時,有一

Spring Session java連線redis 失敗解決方案

日誌提示連線拒絕, 是因為redis預設的protected-mode預設為yes 解決方案1: 進入redis-cli  輸入命令 CONFIG SET protected-mode no 解決方案2. 在redis目錄下的redis.conf配置檔案中增加 pr

mongoDB3.4的sharding搭建JavaAPI的簡易使用

conda ole 文件 存在 ssm data lines 初始化 column 第一部分 在搭建mongoDB之前,我們要考慮幾個小問題: 1、我們搭建集群的目的是什麽?是多備份提高容錯和系統可用性還是橫向拓展存儲大規模數據還是兩者兼有?   如果是為了多備份那麽選擇r

MongoDB 3.0副本搭建

mongodb replication 副本集 集群 主從 環境配置MongoDB安裝下載yum源配置wget https://repo.mongodb.org/yum/redhat/mongodb-org-3.0.repo mv mongodb-org-3.0.repo /etc/y

SpringBoot2.0Spring 5.0 WebMvcConfigurerAdapter被廢棄解決辦法

ide over ted mvc Spring 5 ati color fig boot 1 直接實現WebMvcConfigurer @Configuration public class WebMvcConfg implements WebMvcConfigurer

Spring(4.3.22)中成Hibernate(5.4.0

.config framework iter clas lse get -o size sel (1)pom中添加相關依賴 1 <dependency> 2 <groupId>org.hibernate</groupI

mongodb 4.0副本搭建

近期有同學問mongodb副本集難不難部署,我的回答是不難,很快,幾分鐘搞定,比mysql MHA簡單的不止一點半點。 那麼到底如何部署呢?請看下文。 1.  準備工作 1.1 下載軟體 選擇版本並下載mongodb的軟體,注意作業系統版本等。本次我選用的是percona分支的mongodb 4.2

mongodb 副本搭建

mongodb 搭建 副本集 排錯 mongodb的副本集模式較早前的master-slave模式有了很大的改進,由於之前的master-slave模式不支持主機宕機之後切換到從機,已經逐漸被淘汰。而現在官方推薦的副本集模式,支持多個節點並存,當主節點宕機後從權重最高的副節點開始,依次切換為主

Ubuntu下kafka群環境搭建測試

delet 指定 文件中 新增 img --delete replicat pro alt 1,解壓 root@Ubuntu-1:/usr/local# tar zxvf kafka_2.11-0.8.2.2.tgz 2,重命名 root@Ubuntu-1:/usr/

100 臺規模群存儲系統搭建數據實時備份

集群架構服務器說明 外網 IP(NAT) 內網 IP(NAT) 主機名apache web 服務器 10.0.0.7/24 172.16.1.7/24 web02nginx web 服務器 10.0.0.8/24 172.16.1.8/24 web01NFS 存儲服務器 10.0.0.31/24 172.16

手把手教程: CentOS 6.5 LVS + KeepAlived 搭建 負載均衡 高可用

ipvs 管理 bar 10.10 方正 希望 滿足 open chm 為了實現服務的高可用和可擴展,在網上找了幾天的資料,現在終於配置完畢,現將心得公布處理,希望對和我一樣剛入門的菜鳥能有一些幫助。 一、理論知識(原理) 我們不僅要知其然,而且要知其所以然,所以先

mongodb副本搭建

god 不可 status cin prim conf 負載 mongo 角色 筆記內容:mongodb副本集搭建筆記日期:2018-01-09 21.33 mongodb副本集介紹 21.34 mongodb副本集搭建 21.35 mongodb副本集測試 2

zookeeper搭建優化

eal snapshot 環境 方式 ocs 是否 threshold 生成文件 忽略 zookeeper配置:三臺集群。 zookeeper二進制包安裝方法:tar -xf zookeeper-3.4.6.tar.gz -C /usr/localcd /usr/local

MongoDB分片副本搭建

linux members min sharding 集合 cti rds arbiter add 1、安裝mongodbtar xvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz -C /usr/local/cd /u