• 【运维日常】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>
      

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

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

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

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

    1. # mongod.conf
    2. # for documentation of all options, see:
    3. # http://docs.mongodb.org/manual/reference/configuration-options/
    4. # where to write logging data.
    5. systemLog:
    6. destination: file
    7. logAppend: true
    8. path: /home/mongod/mongo-28100/production/log/mongod.log
    9. storage:
    10. dbPath: /home/mongod/mongo-28100/production/data
    11. ##journal配置
    12. journal:
    13. enabled: true
    14. ##是否一个库一个文件夹
    15. directoryPerDB: true
    16. ##数据引擎
    17. engine: wiredTiger
    18. ##WT引擎配置
    19. wiredTiger:
    20. engineConfig:
    21. ##WT最大使用cache(根据服务器实际情况调节)
    22. cacheSizeGB: 2
    23. ##是否将索引也按数据库名单独存储
    24. directoryForIndexes: true
    25. ##表压缩配置
    26. collectionConfig:
    27. blockCompressor: zlib
    28. ##索引配置
    29. indexConfig:
    30. prefixCompression: true
    31. # how the process runs
    32. processManagement:
    33. fork: true # fork and run in background
    34. pidFilePath: /home/mongod/mongo-28100/production/mongod.pid # location of pidfile
    35. timeZoneInfo: /usr/share/zoneinfo
    36. # network interfaces
    37. net:
    38. port: 28888
    39. bindIp: x.x.x.x
    40. #security:
    41. #operationProfiling:
    42. replication:
    43. oplogSizeMB: 50
    44. replSetName: bi
    45. #sharding:
    46. ## Enterprise-Only Options
    47. #auditLog:
    48. #snmp:

  • 相关阅读:
    vue3 vite4 安装eslint进行初始化时报错
    【Games101】-> 计算机图形学
    我来告诉你代码重构有什么好处
    如何防止网络安全攻击
    tomcat9 zip包 安装
    MAC版InDesign 2022 17.4(ID2022)已发布,原生支持Intel和M1/M2三系统,速度提升80%
    人到中年,是安逸的活着还是再拼一把?
    【OpenGauss源码学习 —— 执行算子(Nest Loop 算子)】
    哺乳动物组织和培养细胞提取蛋白—Abbkine ExKine总蛋白提取试剂盒
    vue处理下载文件接口返回流或json格式都存在的数据
  • 原文地址:https://blog.csdn.net/zerotoall/article/details/133674130