当前位置: 首页 > news >正文

【运维日常】mongodb 集群生产实践

  本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

部署过程

在 MongoDB 中,可以通过以下步骤来部署一个集群:

1. 安装 MongoDB:首先,需要在每个节点上安装 MongoDB 数据库软件。可以从 MongoDB 官方网站下载适用于操作系统的安装程序,并按照官方文档提供的说明进行安装。

2. 规划架构:在部署集群之前,需要规划集群的架构和拓扑结构。MongoDB 支持多种集群架构,包括副本集(Replica Set)和分片集群(Sharded Cluster)。副本集用于提供数据冗余和高可用性,而分片集群用于处理大规模数据和负载。

   - 副本集:副本集包含多个节点,其中一个是主节点(Primary),其他节点是从节点(Secondary)。主节点负责处理所有写操作,从节点复制主节点的数据并可用于读操作。可以使用 `rs.initiate()` 命令初始化一个副本集。

   - 分片集群:分片集群由多个分片(Shard)组成,每个分片存储集群的一部分数据。还需要配置一个或多个配置服务器(Config Server)来管理元数据和分片信息。可以使用 `sh.addShard()` 命令将分片添加到集群中。

3. 配置节点:根据集群架构的选择,配置每个节点的角色和相关参数。

   - 副本集:在每个节点上配置副本集的成员角色,包括主节点、从节点和仲裁节点(Arbiter)。可以使用 `rs.add()` 命令将节点添加到副本集中,并使用 `rs.conf()` 命令进行配置。

   - 分片集群:在每个节点上配置分片集群的角色,包括分片、配置服务器和路由器(Router)。可以使用 `sh.addShard()` 命令将节点添加为分片,并使用 `sh.addShard()` 命令配置分片集群。

4. 启动集群:在每个节点上启动 MongoDB 服务,并确保节点之间可以相互通信。可以使用启动脚本或命令来启动 MongoDB 服务。

5. 验证集群:一旦集群启动,可以使用 MongoDB 提供的命令和工具来验证集群的状态和功能。例如,可以使用 `rs.status()` 命令来检查副本集的状态,或使用 `sh.status()` 命令来检查分片集群的状态。

以上是一个基本的 MongoDB 集群部署过程的概述。根据具体需求和复杂性,可能需要参考 MongoDB 的官方文档并进行更详细的配置和调整。此外,建议在生产环境中进行充分的测试和规划,并根据需求考虑安全性、性能调优和监控等方面的配置。

最佳实践

在 MongoDB 中,可以使用配置文件来指定 MongoDB 实例的各种设置。下面是配置文件的基本内容和启动集群的步骤:

  1. 创建配置文件:首先,创建一个文本文件,并将其命名为 mongod.conf(或其他自定义名称)。该文件将包含 MongoDB 实例的配置选项。

  2. 配置文件内容:打开配置文件,并根据需要添加或修改以下配置选项:

    • storage.dbPath:指定数据文件存储的路径。
    • systemLog.path:指定日志文件的路径。
    • net.bindIp:指定 MongoDB 监听的 IP 地址。
    • net.port:指定 MongoDB 监听的端口号。
    • replication.replSetName:对于副本集,指定副本集的名称。
    • sharding.clusterRole:对于分片集群,指定节点的角色,如 configsvrshardsvr 或 mongos
    • sharding.configDB:对于分片集群,指定配置服务器的连接字符串。

    还有其他许多配置选项,可以根据具体需求进行设置。可以参考 MongoDB 的官方文档,以获取更详细的配置选项和说明。

  3. 保存配置文件:保存配置文件,并确保文件名为 mongod.conf

  4. 启动集群:使用以下命令启动 MongoDB 集群:

    mongod --config /path/to/mongod.conf
    

    将 /path/to/mongod.conf 替换为实际的配置文件路径。

    对于分片集群,还需要启动配置服务器和路由器。可以使用以下命令启动配置服务器:

    mongod --configsvr --config /path/to/mongod.conf
    

    使用以下命令启动路由器(mongos):

    mongos --configdb <configdb_connection_string>
    

    将 <configdb_connection_string> 替换为实际的配置服务器连接字符串。

    启动集群后,每个节点将根据配置文件的设置运行 MongoDB 实例,并开始与其他节点通信和同步数据。

请注意,以上步骤仅为基本的配置和启动集群过程。在实际情况中,可能需要根据需求进行更详细的配置和调整。建议参考 MongoDB 的官方文档,并在生产环境中进行充分的测试和规划。

配置案例-副本集群配置:

# mongod.conf# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/# where to write logging data.
systemLog:destination: filelogAppend: truepath: /home/mongod/mongo-28100/production/log/mongod.logstorage:dbPath: /home/mongod/mongo-28100/production/data
##journal配置journal:enabled: true
##是否一个库一个文件夹directoryPerDB: true
##数据引擎engine: wiredTiger
##WT引擎配置wiredTiger:engineConfig:
##WT最大使用cache(根据服务器实际情况调节)cacheSizeGB: 2
##是否将索引也按数据库名单独存储directoryForIndexes: true
##表压缩配置collectionConfig:blockCompressor: zlib
##索引配置indexConfig:prefixCompression: true# how the process runs
processManagement:fork: true  # fork and run in backgroundpidFilePath: /home/mongod/mongo-28100/production/mongod.pid  # location of pidfiletimeZoneInfo: /usr/share/zoneinfo# network interfaces
net:port: 28888bindIp: x.x.x.x#security:#operationProfiling:replication:oplogSizeMB: 50replSetName: bi#sharding:## Enterprise-Only Options#auditLog:#snmp:

相关文章:

【运维日常】mongodb 集群生产实践

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

【MATLAB源码-第45期】基于matlab的16APSK调制解调仿真,使用卷积编码软判决。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 16APSK调制解调 16APSK (16-ary Amplitude Phase Shift Keying) 是一种相位调制技术&#xff0c;其基本思想是在恒定幅度的条件下&#xff0c;改变信号的相位&#xff0c;从而传送信息。 - 调制&#xff1a;在16APSK中&am…...

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 八)

其他状态管理概述 除了前面章节提到的组件状态管理和应用状态管理&#xff0c;ArkTS还提供了Watch和$$来为开发者提供更多功能&#xff1a; Watch用于监听状态变量的变化。$$运算符&#xff1a;给内置组件提供TS变量的引用&#xff0c;使得TS变量和内置组件的内部状态保持同步…...

SQL按照id集合顺序返回

SQL按照id集合顺序返回 一、需求二、SQL三、MyBatis编写四、FIELD函数五、环境 一、需求 sql这样的 SELECT id, name FROM is_parent_viewshop WHERE id IN (2350, 2396, 3768, 3718, 3692) 按照id顺序返回&#xff0c;sql如何写 二、SQL SELECT id, name FROM is_parent_vi…...

04训练——基于YOLO V8的自定义数据集训练——在windows环境下使用pycharm做训练-1总体步骤

在上文中,笔者介绍了使用google公司提供的免费GPU资源colab来对大量的自定义数据集进行模型训练。该方法虽然简单好用,但是存在以下几方面的短板问题: 一是需要通过虚拟服务器做为跳板机来访问,总体操作起来非常繁杂。 二是需要将大量的数据上传缓慢,管理和使用非常不友…...

iview表格 异步修改列数据卡顿 滚动条失效

使用表格row-key属性 将row-key属性设置为true <Table ref"table" border :row-key"true" :columns"tableColumns" :loading"loading":data"tableData"></Table>...

【Linux】常驻内核和虚拟内存的区别

常驻内存和虚拟内存是计算机内存管理的两个概念。 常驻内存指的是应用程序在运行时&#xff0c;所占用的内存空间不会随着应用程序的启动和关闭而有所变化&#xff0c;这种内存是常驻在计算机的物理内存中的。即使我们关闭了电脑&#xff0c;这些程序也会保持在内存中&#xf…...

Qt 串口接收包含汉字的数据,汉字乱码

通过串口显示打印的调试信息时&#xff0c;接受的中文无法识别&#xff0c;全部乱码&#xff0c;解决办法&#xff1a; QByteArray array m_serial->readAll(); QString array QString::fromLocal8Bit(arr)...

设计模式 - 结构型模式考点篇:适配器模式(类适配器、对象适配器、接口适配器)

目录 一、适配器模式 一句话概括结构式模式 1.1、适配器模式概述 1.2、案例 1.2.1、类适配器模式实现案例 1.2.2、对象适配器 1.2.3、接口适配器 1.3、优缺点&#xff08;对象适配器模式&#xff09; 1.4、应用场景 一、适配器模式 一句话概括结构式模式 教你将类和对…...

android Google官网 :支持不同的语言和文化 rtl / ltr : 本地化适配:RTL(right-to-left) 适配

参考 google官网&#xff1a; 支持不同的语言和文化 应用包含可能专门针对特定文化而设计的资源。例如&#xff0c;应用可以包含针对特定文化的字符串&#xff0c;这些字符串将转换为当前语言区域的语言。 将具有文化特异性的资源与应用的其他资源分开是一种很好的做法。And…...

Visual Studio Code配置C/C++开发环境

C/C开发中的IDE非常多&#xff0c;网上有推荐安装Visual Studio 2019/2020/2022。但是登录官方网址下载&#xff0c;此软件体积非常大(8G以上)&#xff0c;且企业版、专业版会收费。 因此&#xff0c;我们推荐大家可以尝试通过Visual Studio Code来配置C/C开发环境 环境准备 Mi…...

室内渲染的艺术:创造理想空间的视觉魔法!

在繁忙的生活中&#xff0c;我们常常渴望拥有一个属于自己的安静空间。这个空间可以是一间温馨的卧室&#xff0c;也可以是一间舒适的客厅&#xff0c;甚至可以是一个小小的书房。而这个空间的营造&#xff0c;离不开室内渲染。 室内渲染是一种艺术&#xff0c;它用色彩、光线…...

php发送get、post请求的6种方法简明总结?

这篇文章主要介绍php发送get、post请求的6种方法简明总结,分别为使用file_get_contents 、fopen、fsockopen、curl来发送GET和POST请求,需要的朋友可以参考下 方法1: 用file_get_contents 以get方式获取内容&#xff1a; <?php $urlhttp://www.51growup.com/; $html f…...

Go基础之变量和常量

Go基础之变量和常量 文章目录 Go基础之变量和常量一. 标识符、关键字、内置类型和函数1.1 标识符1.2 关键字1.3 保留字1.4 内置类型1.4.1 值类型&#xff1a;1.4.2 引用类型&#xff1a;(指针类型)1.5 内置函数1.6 内置接口error 二.Go变量命名规范2.1 采用驼峰体命名2.2 简单、…...

红队专题-Cobalt strike4.5二次开发

红队专题 招募六边形战士队员IDEA 自动换行原版CS反编译破解jar包反编译拔掉暗桩初始环境效果 stageless beacon http通信协议 过程分析上线&心跳get请求teamserver 处理请求 参考链接 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 …...

Java数据结构之Deque(双端队列)

一、Queue和Deque异同介绍 我们知道&#xff0c;Queue是队列&#xff0c;只能一头进&#xff0c;另一头出。 如果把条件放松一下&#xff0c;允许两头都进&#xff0c;两头都出&#xff0c;这种队列叫双端队列&#xff08;Double Ended Queue&#xff09;&#xff0c;学名Deq…...

flink以增量+全量的方式更新广播状态

背景 flink在实现本地内存和db同步配置表信息时&#xff0c;想要做到类似于增量(保证实时性) 全量(保证和DB数据一致)的效果&#xff0c;那么我们如何通过flink的广播状态外部定时器定时全量同步的方式来实现呢&#xff1f; 实现增量全量的效果 package wikiedits.schedule…...

Java:org.apache.commons.io包的工具类:IOUtils、FileUtils、FilenameUtils

文档 https://commons.apache.org/proper/commons-io/https://central.sonatype.com/artifact/commons-io/commons-io/2.14.0/jar 工具类 IOUtils io工具类FileUtils 文件操作工具类FilenameUtils 文件名工具类 依赖 <dependency><groupId>commons-io</gro…...

【JavaEE】文件操作

文章目录 前言什么是文件树型结构组织和目录文件路径文件类型文件权限Java中的文件操作File 类的常见属性File 类常见构造方法File 类常用方法 前言 文件是我们日常生活中使用非常广泛的&#xff0c;我们使用任何一个程序都离不开文件操作&#xff0c;这个文件不仅仅指平时可以…...

高精度电流源的应用领域有哪些

高精度电流源是一种能够提供稳定、准确、可控的电流输出的仪器设备&#xff0c;广泛应用于多个领域。以下是一些高精度电流源的应用领域。 科学研究&#xff1a;在物理学、化学、材料科学等领域中&#xff0c;需要进行精确的电流实验和测试。高精度电流源可以提供稳定的电流输出…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

Spring AOP代理对象生成原理

代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】&#xff0c;这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...