MongoDB 副本集群

MongoDB副本集群搭建指南 MongoDB副本集群的搭建涉及多个步骤,包括准备环境、配置MongoDB实例、设置副本集等。以下是一个简化的MongoDB副本集群搭建过程的概述,以及相关的代码和命令。 阅读详情

一、引言

在当今的数据库领域,MongoDB 凭借其灵活的数据模型和强大的功能,成为了众多开发者的首选。副本集作为 MongoDB 中实现高可用性和数据冗余的关键特性,对于保障数据库的稳定运行具有重要意义。本文将结合所学知识点、技能点以及丰富的应用案例,为您深入剖析 MongoDB 副本集的相关内容。

二、MongoDB 副本集介绍

MongoDB 副本集是由一组服务器组成的集合,它们共同维护相同的数据集。在副本集中,通常有一个主节点(Primary)负责处理所有的写操作,而其他的从节点(Secondary)则从主节点复制数据以保持同步。副本集提供了自动故障转移功能,当主节点发生故障时,从节点中的一个会自动晋升为主节点,确保数据库服务的连续性和数据的可用性。

三、副本集搭建部署过程

以下是在三台服务器(Server1、Server2、Server3)上搭建 MongoDB 副本集的示例步骤:

  1. 准备服务器

    确保三台服务器之间网络连通,并且满足 MongoDB 的系统要求。
  2. 安装 MongoDB

    在每台服务器上按照 MongoDB 的官方文档进行安装。
  3. 启动 MongoDB 服务

    在 Server1 上执行以下命令启动服务:
    mongod --port 27017 --dbpath /data/db1 --replSet myReplSet
  • 在 Server2 上执行:
    mongod --port 27017 --dbpath /data/db2 --replSet myReplSet
  • 在 Server3 上执行:
    mongod --port 27017 --dbpath /data/db3 --replSet myReplSet

     4.初始化副本集

  • 在 Server1 上连接到 MongoDB 服务:
    mongo
  • 执行以下初始化命令:
    rs.initiate({
      _id: "myReplSet",
      members: [
        { _id : 0, host : "Server1:27017" },
        { _id : 1, host : "Server2:27017" },
        { _id : 2, host : "Server3:27017" }
      ]
    })

5.配置成员属性(可选)

  • 可以根据需求设置成员的优先级、投票权等属性。例如,要设置 Server1 的优先级为 2(默认是 1),可以执行以下命令:
    rs.conf().members[0].priority = 2;
    rs.reconfig(rs.conf());

    四、副本集使用方法(验证)

1.写入数据

  • 连接到主节点,执行写入操作:
    mongo --host Server1:27017
    db.myCollection.insert({ name: "John Doe" });
  • 观察数据是否成功存储。

2.读取数据

  • 可以从主节点或从节点读取数据,验证数据的一致性:
    mongo --host Server2:27017
    db.myCollection.find();

3.监控副本集状态

  • 使用以下命令监控副本集成员的状态、复制进度等:
    rs.status();

    五、副本集增加和删除节点方法

1.增加节点

  • 准备新的服务器 Server4,安装并启动 MongoDB 服务:
    mongod --port 27017 --dbpath /data/db4 --replSet myReplSet
  • 在现有副本集中执行以下命令添加新节点:
    rs.add("Server4:27017");

2.删除节点

  • 确保要删除的节点不是主节点。
  • 执行以下命令删除节点:
    rs.remove("Server4:27017");

    六、常见的错误解析

1.复制延迟过高

  • 可能原因包括网络问题、服务器性能不足、数据量过大等。
  • 解决方法:优化网络环境、提升服务器硬件配置、检查复制配置是否合理,如 oplog 大小等。

2.选举失败

  • 可能是成员之间的通信问题、配置错误(如优先级设置不当)等。
  • 解决方法:检查网络连接是否稳定、确保配置的正确性,特别是成员的优先级和投票权设置。

3.数据不一致

  • 可能是复制过程中的错误、写入冲突、网络分区等。
  • 解决方法:检查复制日志,查找不一致的原因;处理写入冲突,确保数据的一致性;解决网络分区问题,保证成员之间的正常通信。

MongoDB副本集群数据同步及主从复制 MongoDB副本集群中,出现了一个新概念:仲裁节点,其实作用等同于哨兵节点,但它并不是副本集群必须存在的节点,因为主节点、副本节点都拥有投票能力,它的存在只是为了维护集群内的平衡,如集群节点为偶数时,可以添加一个仲裁节点,让集群保持奇数特性,确保每轮选举一次就能推出新主,避免多轮无效竞选的现象出现(不了解选举机制的后面会说原理)。执行上述初始化命令,只要看到ok:1这个字段值,说明初始化成功,接着稍等片刻,MongoDB会自动将当前连接的节点,设置为集群的主节点。集合中,可以直接去查询这个集合。 阅读详情

相关推荐

mongodb-副本集群-搭建

Arbitration:代表仲裁节点,仲裁节点不存储任何数据,其主要作用就是当主节点挂掉以后,把那个备份节点提升为一个主节点。当主库宕机后,两个从库都会进行竞选,其中一个变为主库,当原主库恢复后,作为从库加入当前的复制集群即可。设置副本集名称,也就是设置集群名称,必须要设置,否则没法构建集群。一个主,两个从库组成,主库宕机时,这两个从库都可以被选为主库。Master:代表主节点,主节点提供所有数据的CRUD服务。Backup:代表从节点,从节点不提供任何服务。对于中小型项目,使用副本集群就够了。

dadalaod的博客 343

mongodb副本集群

首先登陆到主节点mongo 127.0.0.1:27017,因为只能在主节点上操作。其中第一个“id”为复制集的ID标识,即"id":“rs0”;第二个“id”是复制集内成员的标识,即"id":0。还有一种初始化的方法,就是先只初始化一个节点,然后再通过命令rs.add("ip:port") 来添加从节点或。在主节点(127.0.0.1:27017)上的test库collection集合c1中插入数据。通过命令rs.addArb("ip:port")来添加投票节点。是分别运行的MongoDB实例的端口。

2301_82308696的博客 969

docker方式部署mongodb带认证的分片副本集群

docker方式部署mongodb带认证的分片副本集群 一、背景知识 副本集:参阅官网-https://docs.mongodb.com/manual/replication/ 分片:参阅官网-https://docs.mongodb.com/manual/sharding/ 二、集群结构 说明:三个config-server构成config-server副本集;集群中有三个分片,每个分片是一个...

guan0005的博客 4176

技术博客:mongodb副本集群

技术博客:mongodb副本集群

cgjxh的博客 1039

二十六、MongoDB 副本集群复制

二十六、MongoDB 副本集群复制

qq_25843323的博客 268

【现代电路理论】【2】考尔法设计无源单口网络

夏 弥:其实你在冰面上看到鱼浮上来 明年冬天如果你还在那里,那鱼还是会上来换气 那时候你就可以带一把冰镐 把冰面砸开把鱼捞上来熬汤

痛苦的时候装出幸福相,这不是那么难做到的事 2886

MongoDB副本集群

MongoDB副本集群由多个节点组成,包括一个主节点(Primary)和多个副本节点(Secondary)。主节点负责处理客户端的读写请求,而副本节点则负责复制主节点的数据,以保持数据的一致性。此外,副本集群还可以包含一个或多个仲裁节点(Arbiter),它们不存储数据,但参与选举过程,帮助决定哪个节点应成为主节点。

FCR888的博客 456

DEA各种模型原理及stata代码实现

DEA各种模型原理及stata代码实现DEA各种模型原理及stata代码实现一、CCR和BCC1.原理2.效率测算stata代码3.Malmquist指数3.1M指数3.2Global-Malmquist指数4.指数计算代码与案例二、SBM模型1.原理2.stata代码实现三、方向性距离函数(DDF)1.原理2.stata代码实现3.非径向DDF模型(NDDF)3.GML指数4.指数测算四、总结 DEA各种模型原理及stata代码实现 一、CCR和BCC 1.原理 CCR模型产出导向下的效率通过求解以下规划

wonder1322的博客 4万+

prisma使用mongodb副本集群报错引发的一些列问题

前提因为prisma对于增删改有事务,所以必须使用mongdb副本集群错误描述错误描述很清楚Addresslocalhost27017,没有找到合适可用的服务.env文件一切都很平平无奇,下面进行排查流程,此处,可以百度,上面有很多教程。...

qq_45593068的博客 1287

DEMATEL-ISM模型的Python实现——方法介绍以及代码复现

本文参考文献与网络资料,对DEMATEL-ISM方法做了介绍何步骤描述,并给出Python代码进行了计算和绘图。

cros1的博客 2万+

在 SAP 里玩转 FTP:标准程序 RSFTP00x 全景解析与落地实践

摘要:SAP系统通过封装的标准FTP程序(RSFTP001-008)提供便捷的文件传输能力,适用于各类集成场景。关键点包括:1)依赖SAPFTP可执行程序和RFC目的地;2)使用RSFTP005进行前置检查并生成RFC配置;3)标准报表各司其职,如RSFTP002用于命令测试、RSFTP007/008提供参考实现;4)开发时组合FTP_CONNECT/COMMAND/DISCONNECT等函数模块。特别注意前台(SAPFTP)与后台(SAPFTPA)的环境差异,这是常见故障点。该方案通过标准化工具链显著降低

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 210

Docker / Podman 建立MongoDB 副本集群

Docker / Podman 建立MongoDB 副本集群Docker / Podman 建立MongoDB 副本集群建立生成Docker-compose.yaml脚本Docker 下部署:拷贝脚本到要部署的机器上登录目标机器,执行脚本建立相关目录 Docker / Podman 建立MongoDB 副本集群 本文介绍的MongoDB副本集群建立方法只能在Linux系统上使用,其他类Unix系统不适用于此方法。 建立生成Docker-compose.yaml脚本 建立mongoReplSetBuild

红泥屋 1198

2 硬件工程师笔面试高频知识考点真题解析——电容

本文全面解析了电容在电子电路中的关键应用与技术要点。主要内容包括:1. 电容选型核心要素:介质材质(陶瓷/电解/钽电容等)、容值精度、耐压等级、温度特性、ESR参数等,不同应用场景(滤波/去耦/谐振等)的选型策略。2. 典型电路应用原理:详细阐述去耦电容布局规则、晶振负载电容作用、共射放大电路旁路电容功能,以及RC电路的滤波/定时等应用。3. 特殊问题解决方案:MLCC啸叫机理与对策、寄生电容影响与消除、高速信号线电容使用禁忌等工程实践难题。4. 安全规范要点:X/Y电容的区别与选用、电解/钽电容防反接措施

XU157303764的博客 1559

mongoDB大数据——mongodb副本集群搭建及节点动态管理(linux)

目录 (1)副本集群思路图: (2)副本集群节点角色: (3)副本集群搭建实例: A、副本集群节点配置: B、各个节点配置mongodb数据库: C、启动各个节点mongodb服务: D、连接任意节点配置副本集信息: E、副本集配置信息初始化生效: F、查看副本集群状态信息: G、操作工具连接副本集群: H、客户端连接副本集群: (4)副本集群登录认证: A、所有节点配置...

LSY_优快云_的博客 806

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3476

从Raw图像到超分辨率:真实场景下的图像增强全流程指南

通过本文的学习,您已掌握了利用Raw图像实现真实场景超分辨率的完整技术链——从数据生成的“真实感模拟”,到双分支CNN的“细节+色彩”协同建模,再到模型的训练与落地。本文将带您从理论到实践,掌握利用Raw图像实现真实场景超分辨率的核心技术,让您的图像在细节和色彩上都能“更上一层楼”。是相机传感器直接输出的原始数据,保留了最完整的亮度、色彩信息(如Bayer阵列的原始采样),这为超分辨率提供了“富矿级”的信息基础。该分支以低分辨率RGB图像为参考,学习“色彩变换矩阵”,让恢复的细节拥有真实的色彩表现。

FJN110的博客 142

MongoDB副本集群-搭建

Arbitration:代表仲裁节点,仲裁节点不存储任何数据,其主要作用就是当主节点挂掉以后,把那个备份节点提升为一个主节点。当主库宕机后,两个从库都会进行竞选,其中一个变为主库,当原主库恢复后,作为从库加入当前的复制集群即可。设置副本集名称,也就是设置集群名称,必须要设置,否则没法构建集群。一个主,两个从库组成,主库宕机时,这两个从库都可以被选为主库。Master:代表主节点,主节点提供所有数据的CRUD服务。Backup:代表从节点,从节点不提供任何服务。对于中小型项目,使用副本集群就够了。

weixin_45417754的博客 324

GJB设计开发各阶段的文件和记录要求

GJB设计开发各阶段的文件和记录要求

Abel的博客 4054

在Docker上部署mongodb分片副本集群。

在Docker上部署mongodb分片副本集群。

u012632105的博客 342

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mongodb运维技巧之一把查看分片集群副本集群

mongodb运维

qq_34478339的博客 356

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

如何快速搭建免费云上 MongoDB 副本集群

简介:本文将为大家介绍如何在云上快速搭建免费的 MongoDB 副本集群。 作者:梓杰 镜像下载、域名解析、时间同步请点击阿里巴巴开源镜像站 一、简介   MongoDB官方不止提供了社区版和企业版的数据库,还有MongoDB Atlas:Fully managed cloud database。 二、如何快速搭建一套MongoDB集群 2.1 首先打开MongoDB的官方网站,进入MongoDB Atlas: 2.2 然后划到最下方,如果没有账号下进行注册,这里我们选择直接登陆..

a1587943743的博客 167

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

mongodb副本集群搭建

mongodb副本集群搭建1、启动replSet模式 (1)修改monodb.conf (所有节点均加入) replSet=k01 #加入参数,k01为副本集名称# (2)启动mongod是加入参数 --replSet {副本集名称}2、初始化副本集 #只能初始化一次,从库只保持能连通状态即可#> rs.initiate({"_id":"k01","members":[{"_id...

weixin_30516243的博客 88

关于centos7下搭建mongodb副本集群并带有keyfile认证的步骤

关于centos7下搭建mongodb副本集群并带有keyfile认证的步骤 第一步:下载mongodb安装包 地址:https://www.mongodb.com/download-center/community 根据需求选择社区版和企业版 根据自己的操作系统选择对应的版本 第二步:使用secureFX或winSCP文件传输工具将安装包推送至centos7环境下 第三步:安装mongodb ...

yanmouren110的博客 681
上一篇: MongoDB 分片集群
下一篇: 大数据分析应用
谢李由20230322081
博客等级 码龄3年 248粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值