当前位置: 首页 > 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:

http://www.lryc.cn/news/187599.html

相关文章:

  • 【MATLAB源码-第45期】基于matlab的16APSK调制解调仿真,使用卷积编码软判决。
  • HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 八)
  • SQL按照id集合顺序返回
  • 04训练——基于YOLO V8的自定义数据集训练——在windows环境下使用pycharm做训练-1总体步骤
  • iview表格 异步修改列数据卡顿 滚动条失效
  • 【Linux】常驻内核和虚拟内存的区别
  • Qt 串口接收包含汉字的数据,汉字乱码
  • 设计模式 - 结构型模式考点篇:适配器模式(类适配器、对象适配器、接口适配器)
  • android Google官网 :支持不同的语言和文化 rtl / ltr : 本地化适配:RTL(right-to-left) 适配
  • Visual Studio Code配置C/C++开发环境
  • 室内渲染的艺术:创造理想空间的视觉魔法!
  • php发送get、post请求的6种方法简明总结?
  • Go基础之变量和常量
  • 红队专题-Cobalt strike4.5二次开发
  • Java数据结构之Deque(双端队列)
  • flink以增量+全量的方式更新广播状态
  • Java:org.apache.commons.io包的工具类:IOUtils、FileUtils、FilenameUtils
  • 【JavaEE】文件操作
  • 高精度电流源的应用领域有哪些
  • 多线程 - 线程池
  • vue3 setup中defineEmits与defineProps的使用案例
  • Vs - Qt - 下拉窗口示例
  • 深圳自贸区的形成与发展
  • 机器人中的数值优化(二十一)—— 伴随灵敏度分析、线性方程组求解器的分类和特点、优化软件
  • BACnet /IP转MQTT网关
  • Web API 基础 (Web Workers API)
  • 如何看待程序员不写注释?
  • 2.6 方法
  • 【排序算法】插入排序
  • Gnuradio+AM解调