(一)主机信息

操作系统版本:centos7 64-bit

数据库版本   :MongoDB 4.2 社区版

ip hostname
192.168.10.41 mongoserver1
192.168.10.42 mongoserver2
192.168.10.43 mongoserver3

(二)副本集搭建过程

首先需要在3台服务器上安装MongoDB软件,安装过程见:https://www.cnblogs.com/lijiaman/p/12983589.html。安装完成之后,即可进行后续的配置,具体操作如下:

(1)在一台机器上创建keyfile

openssl rand -base64 756 > /mongo/mongo-keyfile
chmod 400 /mongo/mongo-keyfile

(2)拷贝feyfile到所有节点

scp /mongo/mongo-keyfile root@192.168.10.42:/mongo/
scp /mongo/mongo-keyfile root@192.168.10.43:/mongo/

(3)以启用身份验证的方式开启所有节点
这里将所有参数设置到配置文件里面,方便管理,配置文件如下:

[root@mongodbserver1 mongo]# cat /etc/mongod.conf
# mongod.conf # for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/ # where to write logging data.
systemLog:
destination: file
logAppend: true
path: /mongo/mongod.log # Where and how to store data.
storage:
dbPath: /mongo/data
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger: # how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /mongo/mongod.pid # location of pidfile # network interfaces
net:
port: 27017
bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces. security:
authorization: enabled # 启用身份验证
keyFile: /mongo/mongo-keyfile # 配置keyfile文件 replication:
replSetName: rstest # 设置副本集名称

然后启动所有节点,以节点1为例:

[root@mongodbserver1 mongo]# mongod -f /etc/mongod.conf

(4)初始化副本集
在其中一个节点执行以下脚本初始化副本集,只需在一个节点上执行即可。

rs.initiate(
{
_id : "rstest",
members: [
{ _id : 0, host : "192.168.10.41:27017" },
{ _id : 1, host : "192.168.10.42:27017" },
{ _id : 2, host : "192.168.10.43:27017" }
]
}
)

参数含义:
_id          :副本集的名称
members :副本集的成员信息

在初始化时,会触发投票选举一个主节点,可以使用rs.status()来确定主节点成员

rstest:SECONDARY> rs.status()
...
"members" : [
{
"_id" : 0,
"name" : "192.168.10.41:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 280,
"optime" : {
"ts" : Timestamp(1592897767, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-06-23T07:36:07Z"),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "",
"electionTime" : Timestamp(1592897607, 1),
"electionDate" : ISODate("2020-06-23T07:33:27Z"),
"configVersion" : 1,
"self" : true,
"lastHeartbeatMessage" : ""
},
...

(5)创建管理员用户
第一个用户必须要有创建其它用户的权限,例如需要有userAdminAnyDatabase权限,并且需要创建在admin数据库中。
因为是在副本集上创建用户,故要在主节点上执行。如创建root用户

use admin;

db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"userAdminAnyDatabase",db:"admin"}]
}
)

(6)以管理员身份登录数据库
通过以下方式以管理员身份登录到数据库

mongo -u root -p 123456 --authenticationDatabase admin

(7)创建一个集群管理员账户
clusterAdmin角色被授予副本集操作的权限,如配置副本集。在admin数据库中创建一个集群管理员并授予clusterAdmin角色。

use admin

db.createUser(
{
"user" : "replica",
"pwd" : "replica",
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)

(8)要启用身份验证,需要重启数据库
重启完成后,就需要以用户密码方式登录数据库了,假如不使用用户名密码,可以登录数据库,但是无法访问数据

[root@mongodbserver2 mongo]# mongo
MongoDB shell version v4.2.7
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("d49b410b-a7af-4550-a455-faa82885517b") }
MongoDB server version: 4.2.7
rstest:PRIMARY> show dbs
rstest:PRIMARY>
rstest:PRIMARY> db
test

只有使用了用户名密码,才能查到数据:

[root@mongodbserver2 mongo]# mongo -u root -p 123456 --authenticationDatabase admin
MongoDB shell version v4.2.7
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("a1f0da48-1266-4766-a9e4-32b97a46c3ec") }
MongoDB server version: 4.2.7
rstest:PRIMARY>
rstest:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB

【完】

MongoDB副本集replica set (二)--副本集环境搭建的更多相关文章

  1. 总结Selenium自动化测试方法(二)测试环境搭建

    (接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...

  2. C# NX二次开发环境搭建

    在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...

  3. Redash 二开 - 后端环境搭建

    Redash 二开 - 后端环境搭建 一.操作系统选择 官方文档有一句话:Windows users: while it should be possible to run Redash on a W ...

  4. Dubbo+zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

  5. 从零学习Fluter(二):win10上环境搭建以及模拟器和真机调试

    今天呢,又继续看了flutter 弗拉特 的东西,绝的这个东西绝对是比ReactNative更高一层次的,在2018年12月5好,flutter的第一个stale1.0发布了,我们在GitHub上可以 ...

  6. 第一周博客之二---OA项目环境搭建及开发包部署

    OA项目环境搭建 一个项目想要能够在开发人员打包好项目包之后进行测试,就必须进行项目测试环境的搭建,要根据开发工程师的开发环境采用不同的测试环境,以下只是浅谈下Java项目OA(办公自动化平台)的环境 ...

  7. Vue项目二、vue环境搭建以及Vue-cli使用及详解

    一.Vue多页面应用的环境搭建 每一次页面跳转的时候,后台服务器都会给返回一个新的html文档,这种类型的网站也就是多页网站,也叫做多页应用. 环境的搭建如下,在页面中引入如下框架 <scrip ...

  8. Flutter入门教程(二)开发环境搭建

    学习Flutter,首先需要搭建好Flutter的开发环境,下面我将一步步带领大家搭建开发环境并且成功运行flutter项目. Flutter环境配置主要有这几点: 系统配置要求 Java环境 Flu ...

  9. MongoDB副本集学习(一):概述和环境搭建

    MongoDB副本集概述 以下图片摘自MongoDB官方文档:http://docs.mongodb.org/manual/core/replication-introduction/ Primary ...

随机推荐

  1. This关键字练习

    Account: package com.aff.ex; public class Account { private int id;// 账号 private double balance;// 余 ...

  2. json工具--org.json.jar

    org.json可以解析json.把对象包装成json.API文档:http://resources.arcgis.com/en/help/arcobjects-java/api/arcobjects ...

  3. zabbix通过IPMI模式监控服务器风扇转速和温度反映机房室温变化实例

      说明:2019年4月7日321机房OA服务器主板监控风扇转速和温度有明显升高,其后3天呈逐日升高趋势.检查机房感觉空调制冷量不足.4月11日联系空调维修进行处理,空调制冷恢复正常,风扇转速和温度监 ...

  4. [C#.NET拾遗补漏]01:字符串操作

    字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下 C# 中关于字符串的一些你可能遗忘或遗漏的知识点. 逐字字符串 在普通字符串中,反斜杠字符是转义字符.而在逐字字符串(Verbatim ...

  5. SpringMVC(三)Restful风格及实例、参数的转换

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.Restful风格 1.Restful风格的介绍 Restful 一种软件架构风格.设计风格,而不是 ...

  6. Java实现 LeetCode 539 最小时间差(单位转换)

    539. 最小时间差 给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示. 示例 1: 输入: ["23:59","00:0 ...

  7. Java实现 蓝桥杯VIP 算法训练 阶乘末尾

    问题描述 给定n和len,输出n!末尾len位. 输入格式 一行两个正整数n和len. 输出格式 一行一个字符串,表示答案.长度不足用前置零补全. 样例输入 6 5 样例输出 00720 数据规模和约 ...

  8. java实现第三届蓝桥杯火柴游戏

    火柴游戏 [编程题](满分34分) 这是一个纵横火柴棒游戏.如图[1.jpg],在3x4的格子中,游戏的双方轮流放置火柴棒.其规则是: 不能放置在已经放置火柴棒的地方(即只能在空格中放置). 火柴棒的 ...

  9. Linux 用户和用户组管理-用户信息文件

    用户信息文件存在在/etc/passwd中,vi /etc/passwd 其中,有七列以:分隔的信息 第一列表示用户(account),第二列表示密码标志(真正的密码存在在/etc/shadow中), ...

  10. 使用dotnet Cli向nuget发布包

    长话短说, 今天分享如何在nuget.org创建并发布.NET Standard package. 前置 安装勾选.NET Core开发套件的Visual Studio; 安装dotnet Cli 从 ...