Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

  • Redis

  • Keydb

  • TiDB

  • MongoDB

    • MongoDB 集群的安装部署详细流程
      • MongoDB 集群架构介绍
      • MongoDB 集群Config Server 复制集的工作原理
    • Elasticsearch

    • Kafka

    • victoriametrics

    • BigData

    • Sqlserver

    • 数据库
    • MongoDB
    Carry の Blog
    2024-09-14
    目录

    MongoDB 集群的安装部署详细流程

    # 前言

    MongoDB 是一个基于分布式架构的 NoSQL 数据库,它可以通过复制集和分片集群实现高可用和扩展性。本文详细介绍如何在多个节点上部署 MongoDB 集群,包括复制集和分片集群的安装配置过程。

    # 环境准备

    假设我们有三台服务器,IP 地址分别为:

    • 192.168.1.101
    • 192.168.1.102
    • 192.168.1.103

    每台服务器的 MongoDB 数据存储路径为 /data/mongodb,日志路径为 /var/log/mongodb。MongoDB 安装路径为 /usr/local/mongodb。

    # 1. 安装 MongoDB

    # 1.1 下载 MongoDB

    在每个节点上下载 MongoDB 二进制文件:

    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-6.0.4.tgz
    tar -zxvf mongodb-linux-x86_64-6.0.4.tgz
    sudo mv mongodb-linux-x86_64-6.0.4 /usr/local/mongodb
    
    1
    2
    3

    # 1.2 配置环境变量

    编辑 /etc/profile 文件,添加 MongoDB 路径:

    export PATH=/usr/local/mongodb/bin:$PATH
    
    1

    然后执行以下命令使环境变量生效:

    source /etc/profile
    
    1

    # 2. 配置 MongoDB 复制集

    复制集提供数据冗余和故障转移功能,保证 MongoDB 数据的高可用性。我们将三台服务器配置成复制集模式。

    # 2.1 创建数据和日志目录

    在每台服务器上创建 MongoDB 数据和日志目录:

    sudo mkdir -p /data/mongodb
    sudo mkdir -p /var/log/mongodb
    sudo chown -R mongodb:mongodb /data/mongodb /var/log/mongodb
    
    1
    2
    3

    # 2.2 配置 MongoDB 配置文件

    在每台服务器上编辑 MongoDB 配置文件 /etc/mongod.conf:

    # /etc/mongod.conf
    systemLog:
      destination: file
      path: "/var/log/mongodb/mongod.log"
      logAppend: true
    storage:
      dbPath: "/data/mongodb"
      journal:
        enabled: true
    net:
      bindIp: 0.0.0.0
      port: 27017
    replication:
      replSetName: "rs0"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    # 2.3 启动 MongoDB 服务

    在每台服务器上启动 MongoDB:

    mongod --config /etc/mongod.conf --fork
    
    1

    # 2.4 初始化复制集

    在 192.168.1.101 节点上连接 MongoDB 并初始化复制集:

    mongo --host 192.168.1.101
    rs.initiate({
      _id: "rs0",
      members: [
        { _id: 0, host: "192.168.1.101:27017" },
        { _id: 1, host: "192.168.1.102:27017" },
        { _id: 2, host: "192.168.1.103:27017" }
      ]
    })
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    可以通过 rs.status() 查看复制集状态。

    # 3. 配置 MongoDB 分片集群

    分片集群可以通过将数据水平拆分到多个节点上来实现扩展性。

    # 3.1 配置分片服务器

    假设我们有两台服务器用作分片,IP 地址分别为 192.168.1.104 和 192.168.1.105。

    在这两台服务器上分别安装并配置 MongoDB,类似于复制集的安装步骤。配置文件 /etc/mongod.conf 应该如下:

    # /etc/mongod.conf
    systemLog:
      destination: file
      path: "/var/log/mongodb/mongod.log"
      logAppend: true
    storage:
      dbPath: "/data/mongodb"
      journal:
        enabled: true
    net:
      bindIp: 0.0.0.0
      port: 27018
    sharding:
      clusterRole: shardsvr
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    启动分片服务器:

    mongod --config /etc/mongod.conf --fork
    
    1

    # 3.2 配置路由服务器

    在另一台服务器上作为路由服务器,编辑 MongoDB 配置文件 /etc/mongos.conf:

    # /etc/mongos.conf
    systemLog:
      destination: file
      path: "/var/log/mongodb/mongos.log"
      logAppend: true
    net:
      bindIp: 0.0.0.0
      port: 27017
    sharding:
      configDB: rs0/192.168.1.101:27017,192.168.1.102:27017,192.168.1.103:27017
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    启动路由服务器:

    mongos --config /etc/mongos.conf --fork
    
    1

    # 3.3 添加分片到集群

    连接路由服务器并添加分片:

    mongo --host 192.168.1.101 --port 27017
    sh.addShard("rs0/192.168.1.104:27018")
    sh.addShard("rs0/192.168.1.105:27018")
    
    1
    2
    3

    # 4. 验证安装

    通过以下命令验证分片和复制集是否正确配置:

    sh.status()   # 查看分片状态
    rs.status()   # 查看复制集状态
    
    1
    2
    #MongoDB#安装部署#集群#复制集#分片集群
    上次更新: 4/24/2025

    ← tidb fast ddl MongoDB 集群架构介绍→

    最近更新
    01
    tidb fast ddl
    04-04
    02
    TiDB配置文件调优 原创
    04-03
    03
    如何移除TiDB中的表分区 原创
    04-03
    更多文章>
    Theme by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式