IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mongodb搭建副本集 -> 正文阅读

[大数据]mongodb搭建副本集

mongodb搭建副本集

一、副本集介绍

副本集有两种类型三种角色
1、两种类型:
主节点(Primary)类型:数据操作的主要连接点,可读写。
次要(辅助、从)节点(Secondaries)类型:数据冗余备份节点,可以读或选举。

2、三种角色:
主要成员(Primary):主要接收所有写操作。就是主节点。
副本成员(Replicate):从主节点通过复制操作以维护相同的数据集,即备份数据,不可写操作,但可
以读操作(但需要配置)。是默认的一种从节点类型。
仲裁者(Arbiter):不保留任何数据的副本,只具有投票选举作用。当然也可以将仲裁服务器维护为副
本集的一部分,即副本成员同时也可以是仲裁者。也是一种从节点类型。

二、安装mongoDB

https://blog.csdn.net/qq_27378621/article/details/80933354

三、配置副本集

1、业务比较简单,搭建主从就好了。文件夹流程图。
在这里插入图片描述

2、主配置文件master.conf

# mongodb端口
port=27017

# 绑定ip,只有这个ip才可以访问上mongodb
bind_ip=127.0.0.1

# 日志文件的路径
logpath=D:\MongoDB\rs\data\main\main.log

# 数据文件的目录
dbpath=D:\MongoDB\rs\data\main\db

# 日志以追加的方式存在
logappend=true

# mongodb进程的pid的值将存入此文件
pidfilepath=D:\MongoDB\rs\data\main\main.pid

# 此参数较大比较好,单位是 MB,默认是磁盘可用空间的 5%
# oplogSize=1024

# 复制集的名称,同一个复制集的名称必须要相同
replSet=mosh

# 开启数据验证
auth=true
oplogSize=100

#数据验证配置文件
keyFile=D:\MongoDB\rs\conf\keyfile

3、从配置文件slaver.conf

# mongodb端口
port=27018

# 绑定ip,只有这个ip才可以访问上mongodb
bind_ip=127.0.0.1

# 日志文件的路径
logpath=D:\MongoDB\rs\data\master\master.log

# 数据文件的目录
dbpath=D:\MongoDB\rs\data\master\db

# 日志以追加的方式存在
logappend=true

# mongodb进程的pid的值将存入此文件
pidfilepath=D:\MongoDB\rs\data\master\master.pid

# 此参数较大比较好,单位是 MB,默认是磁盘可用空间的 5%
# oplogSize=1024

# 复制集的名称,同一个复制集的名称必须要相同
replSet=ms

4、执行节点启动命令,注意先启动的为主节点。我按我的顺序来,先配置主节点、后配置从节点

主节点配置
打开2个cmd
Cmd1:
mongod --config “D:\mongodb6.0.0\rs\conf\master.conf”

Cmd2:
mongo --port 27017

rs.initiate()
第一次会初始化成功 1成功 0失败
如果报错 already initialized 关闭mongo重新启动 重新 rs.initiate()

rs.status()
查看副本集状态

从节点配置
mongod --config “D:\mongodb6.0.0\rs\conf\slaver.conf”

主节点配置

rs.add(127.0.0.1:27018)
添加从节点到副本集

rs.status()
查看副本集状态

此时可以用数据库连接软件调试主节点添加数据库和集合子节点会默认复制。

5、为了安全考虑,使用Keyfile访问控制部署新副本集

主从都需要配置
需要安装openssl
openssl rand -base64 666 > D:\mongo\conf 生成keyfile文件

6、给mongodb设置密码

https://dandelioncloud.cn/article/details/1486526183390171138

7、持续运行

注册命令
mongod.exe --config “D:\mongodb6.0.0\rs\conf\master.conf” --service --serviceName “mongodbMaster” --install

mongod.exe --config “D:\mongodb6.0.0\rs\conf\slaver.conf” --service --serviceName “mongodbSlaver” --install

启动注册好的两个服务
net start mongodbMaster
net start mongodbSlaver

8、node连接mongodb

var express = require('express')
var app = express()

//mongoose这个模块的作用是在node环境中操作mongodb数据库 不需要在cmd窗口中操作mongodb数据库
const mongodb=require('mongoose')
const db='mongodb://ms:ms123@localhost:27017/power'
//链接数据库 如果project这个数据库不存在 就会自动创建的
mongodb.connect(db, { useNewUrlParser: true, useUnifiedTopology: true })
    .then(async(res) => {
        console.log("远程数据库连接成功~~")
    //设计集合中的数据名字与数据类型
    let studentSchema=new mongodb.Schema({
      name:String,
      age:Number
    })
//让banji这个集合应用studentSchema
let Student = mongodb.model('user',studentSchema)

app.get('/', function (req, res) {
  console.log(req.query)
  // Student.create(req.query)
  res.send('hello world')
})

app.listen(3500)

// let add=[
//   {
//     name:'李四',
//     weight:"60.5",
//     height:"173"
//   },{
//     name:"张三",
//     weight:"71",
//     height:'174'
//   }
// ]

//增加数据
// Student.create(add)

// //删除数据
// let delect=  await Student.deleteOne({name:"李四"})
// console.log(delect)

//修改数据
// let updete=  await Student.updateOne({name:"李四"},{$set:{name:"王五"}})
// console.log(updete)

// //查找数据 findOne
   const result= await Student.find({name:"李四"}).sort({_id:1})
   console.log(result) 

}).catch((err) => {
        console.log(err)
});

9、Q&A

Q1:无法注册服务

方法一:可以先将原本已有注册的mongodb(刚安装完会自动注册一个mongodb端口为27017的服务)删除,可以在W+R输入services.msc找到mongoDB的服务使用管理员打开cmd然后输入sc delele 服务名即可删除,之后再重新注册一下副本集的服务。

方法二:不适用conf文件注册,将conf文件上所需的配置一一提到命令行,例子:
mongod.exe --dbpath “” ----profileFilter “” --logpath “” --replSet “” … --service --serviceName “” --install

#特别注意 replSet这个配置一定不能忘记,并且两个服务的replSet必须一样

Q2:数据库软件无法连接

是否对外开放了你的服务端口
如若用户密码设置了,检查是否真确
如果报错 node is not in primary or recovering state这个错误,就需要进行 3、启动副本集 找到第2步骤进行配置主从节点

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:04:09  更:2022-10-31 12:05:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 10:51:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码