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 5.0]Replica Set副本集PSS模式搭建 -> 正文阅读

[大数据][Mongodb 5.0]Replica Set副本集PSS模式搭建

前言

我们知道关于Mongodb的副本集有两种:Primary-Secondary-Arbiter(俗称PSA)和Primary-Secondary-Secondary(俗称:PSS),关于两者的含义概念这里不在多余介绍,可自行百度。此篇文章主要介绍PSS模式的副本集搭建。

所谓副本集:就是用几个其他的机器(Secondary),来备份某个特定机器(Primary)上的数据

如果让mongodb变为副本集的模式:简单对配置文件配置一下,然后照常启动一下mongodb就行了,并不需要其他特殊的设置。

前期准备

  • 关闭防火墙
    查看是否关闭:systemctl status firewalld
    关闭防火墙:systemctl stop firewalld
    (不关的话,rs.initiate时会 报replSetInitiate quorum check failed because not all proposed set members responded affirmatively错误)
  • 配置节点,这里我通过vmware虚拟出3个centos7作为3个节点,如下:
    PSS模式(还有PSA模式)地址别名
    Primary192.168.40.128节点1
    Secondary192.168.40.129节点2
    Secondary192.168.40.130节点3

副本集搭建
官网:Deploy a Replica Set — MongoDB Manual

第一步:修改配置文件(默认位置/etc/mongod.conf),设置副本集的一些配置,三个节点都要设置

replication:
   replSetName: "rs0" #3个节点服务器上配置文件中设置的这个值必须是相同的,名字随意
net:
   bindIp: 0.0.0.0 # 用0.0.0.0是因为用ip时总是报错,就用万能的0.0.0.0了

?第二步:启动mongodb(三个节点都要这么启动)

mongod -f /etc/mongod.conf  #通过指定配置文件方式启动

以上两步是配置启动mongodb副本集的方式之一(我建议的方式),另外还有一种替换上面两步的?方式,就是直接在启动mongodb的时候,通过参数直接配置副本集,如下(如果没兴趣可跳过直接到第三步):

mongod --fork --replSet "rs0" --bind_ip 192.168.40.128 --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log

这种方式我再使用时总是出现意想不到的问题,所以我放弃了这种方式,大家可以自己选择。


第三步:初始化副本集(在Primary上进行这一步,其他2个节点不需要操作)

执行下面2句命令:

mongosh
rs.initiate( {
   _id : "rs0",
   members: [
      { _id: 0, host: "192.168.40.128:27017" },
      { _id: 1, host: "192.168.40.129:27017" },
      { _id: 2, host: "192.168.40.130:27017" }
   ]
})

语句执行完成后,出现下面如图内容,就说明副本集已经成功了
?注意命令行的变化,默认通过mongosh连接后命令行显示的是

?,当副本集方式启动后,会在开头多了一个rs0[direct:other]的前缀(这个rs0就是咱在配置文件配置的那个名字)。

?提示:到这里,副本集就算是已经搭建成功了,可以通过rs.status()查看

第四步:验证副本集是否成功
首先,在Primary节点上创建一个Collection(所谓的表),如下图:

?图中命令如下:

 db.rs_test.insertOne({"name":"1"})

然后,我们在其他两个Secondary节点上通过show tables命令来查看节点上的Collection,如下图:

如果能查看到Primary节点上添加的rs_test,那么就说明我们的副本集搭建成功了。

第五步:解决从Secondary节点无法读取数据的问题

在第四步中,我们已经通过show tables命令可以看到在Primary上创建的Collection了,但是如果你想通过find()去读取它里面的数据是不行的,会报错误,如下图:

这是因为默认只能从Primary上读取数据,不能从Secondary上读取数据。如果想从Secondary上也可以读取数据,需要在每个Secondary节点上执行如下命令:

db.getMongo().setReadPref('secondary')
// 参考地址:https://www.mongodb.com/docs/v4.4/reference/method/Mongo.setReadPref/

执行这个命令后?,就可以读取数据了,如下图:

?

到此,一个PSS模式的副本集配置就算完成了。关于PSA模式的有机会在介绍。
最后,因为在整个配置过程中,会经常用到一些例如启动和关闭mongodb,查看mongodb是否启动的命令,为了方便期间,我再最后给大家罗列一下,如下:

命令作用
ps -ef | grep mongod查看mongogdb是否成功启动
use admin
db.shutdownServer()?
通过mongosh连上mongodb后的关闭mongodb进程的方式
mongod --shutdown直接通过mongod关闭mongodb服务【推荐方式】
service mongod stop通过服务方式关闭mongodb服务(尽量不要用这种服务的方式停止mongodb,容易导致启动mongodb时出错)
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork?启动mongodb
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --shutdown关闭mongodb,与上面方式配对使用

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:46:25  更:2022-05-09 12:50:28 
 
开发: 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/23 23:01:44-

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