Mongdb 3.2 复制集配置 官方默认配置 启用认证 Windows环境

本文详细介绍了在Windows环境下,如何配置MongoDB 3.2复制集,包括更新hosts文件、创建数据文件夹、生成keyfile、编写配置文件、启动mongod服务、初始化复制集、添加成员、设置用户认证等步骤,确保复制集正常工作并启用安全性。
摘要由CSDN通过智能技术生成

步骤:

1、更新hosts文件

路径:C:\Windows\System32\drivers\etc

在hosts文件里添加:

xxx.xxx.xxx.xxx    mongodb0.example.net
xxx.xxx.xxx.xxx    mongodb1.example.net
xxx.xxx.xxx.xxx    mongodb2.example.net


2、添加文件夹

路径:D:\MongoDB\data

添加3个文件夹db26001,db26002,db26003


3、生成keyfile文件

linux环境:
openssl rand -base64 756 > aaakeyfile1.dat
chmod 400 aaakeyfile1.dat

//文件需要转换格式,从Unix到Windows格式


4、准备config文件

路径:D:\MongoDB\Server\3.2\bin

文件名:mongodb26001.conf

内容:

port=26001
logpath=D:\MongoDB\data\db26001\mongod26001.log
logappend=true
pidfilepath=D:\MongoDB\data\db26001\26001.pid  
dbpath=D:\MongoDB\data\db26001
#bind_ip=mongodb0.example.net
maxConns=500
replSet=rs0
#auth=true
#keyFile=D:\MongoDB\Server\3.2\bin\aaakeyfile1.dat

#fork=true
#cpu=true
#noauth=true

//相应配置mongodb26002.conf,mongodb26003.conf


5、启动mongod

mongod -f D:\MongoDB\Server\3.2\bin\mongodb26001.conf


6、进入实例1

mongo mongodb0.example.net:26001

运行语句:

 rs.initiate()

返回结果:

运行语句:

rs.conf()

返回结果:



7、启动实例2

mongod -f D:\MongoDB\Server\3.2\bin\mongodb26002.conf

在实例1主窗口运行:

运行语句:

rs.add("mongodb1.example.net:26002")


启动实例3:

mongod -f D:\MongoDB\Server\3.2\bin\mongodb26003.conf

在实例1主窗口运行:

运行语句:

rs.add("mongodb2.example.net:26003")


8、验证:

rs.status()


9、验证复制集是否连通

进入实例3(从节点):

mongo mongodb2.example.net:26003

运行:

 db.testcol123.insert({a1:111})

返回:

WriteResult({ "writeError" : { "code" : 10107, "errmsg" : "not master" } })

//从节点不能写入


--添加数据,测试是否传到从节点

进入实例1:

mongo mongodb0.example.net:26001

运行:

 db.testcol123.insert({a1:111})

返回:

WriteResult({ "nInserted" : 1 })


查看实例2,实例3

运行语句:

 rs.slaveOk()


 db.testcol123.find()

返回:{ "_id" : ObjectId("586b1f612b93726791eff4ca"), "a1" : 111 }

//已经传入从节点



10、添加用户

进入实例1:

mongo mongodb0.example.net:26001


use admin
db.createUser(
  {
    user: "myRootAdmin",
    pwd: "xxx",
    roles: [ { role: "root", db: "admin" } ]
  }
)



use test
db.createUser(
  {
    user: "myTester",
    pwd: "xxx",

    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)


11、停止所有节点,修改config文件,取消以下注释,重启所有节点

#auth=true
#keyFile=D:\MongoDB\Server\3.2\bin\aaakeyfile1.dat


12、用java客户端验证


package com.tesco.mongodb.test;



import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;


import org.bson.Document;
//import org.json.JSONObject;



import com.mongodb.AggregationOutput;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;
import com.mongodb.MongoClientURI;
import com.mongodb.ReadConcern;
import com.mongodb.ReadPreference;
import com.mongodb.WriteConcern;

import com.mongodb.MongoClient;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;


public class Test4 {
 
	public static void main(String[] args) {
		for (int i = 0; i < 3; i++) {
			run1();	
		}
		
	}
	
	
	private static void run1(){
		Logger log = Logger.getLogger("org.mongodb.driver");
		log.setLevel(Level.OFF);
		MongoClient mongoClient  = null;
		MongoCursor<Document> mongoCursor = null;
		try {
			Long l1 = System.currentTimeMillis();
		 
			MongoClientURI connectionString = new MongoClientURI("mongodb://myTester:xxx@" +
 
					"mongodb0.example.net:26001," +
					"mongodb1.example.net:26002," +
					"mongodb2.example.net:26003/test?replicaSet=rs0&maxPoolSize=400");//&readPreference=secondary
 
			
			mongoClient = new MongoClient(connectionString);

			MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
 
			MongoCollection<Document> collection = mongoDatabase.getCollection("testcol123");
 
			FindIterable<Document> findIterable = collection.find();
			mongoCursor = findIterable.iterator();
 
			while (mongoCursor.hasNext()) {
 
				System.out.println(mongoCursor.next());
 
				
			}
			
		 
			
			
			Long l2 = System.currentTimeMillis();
			System.out.println(l2-l1);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(null != mongoCursor)
				mongoCursor.close();
			if(null != mongoClient){
				mongoClient.close();

			}
		}

	}

}



返回:

Document{{_id=586b1f612b93726791eff4ca, a1=111.0}}
Document{{_id=586b1f612b93726791eff4cb, a1=111.0}}
Document{{_id=586b1f622b93726791eff4cc, a1=111.0}}
2125
Document{{_id=586b1f612b93726791eff4ca, a1=111.0}}
Document{{_id=586b1f612b93726791eff4cb, a1=111.0}}
Document{{_id=586b1f622b93726791eff4cc, a1=111.0}}
782
Document{{_id=586b1f612b93726791eff4ca, a1=111.0}}
Document{{_id=586b1f612b93726791eff4cb, a1=111.0}}
Document{{_id=586b1f622b93726791eff4cc, a1=111.0}}
718








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值