MongoDB搭建分片集群

分片:将数据库集合中的数据拆分成多份,分布式的保存到多台电脑上,这样不同的电脑保存不同的数据,就大大的提升了服务器的容量

  • 搭建大致流程

  • 搭建配置服务器复制集

    • 注意:早期版本的配置服务器只要一台即可,最新版本MongoDB要求配置服务器必须是一个复制集
  • 搭建分片服务器复制集:用于保存数据的多台电脑
  • 搭建路由服务器:用于建立配置服务器和分片服务器之间的关系

  • 搭建配置服务器集群

  • 下载:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.6.zip
  • 解压三份MongoDB安装包(三台MongoDB配置服务器),分别命名:mongodb-config-27018、mongodb-config-27019、mongodb-config-27020
  • 在安装目录下新建data和log文件夹
  • log目录下新建mongo.log文件
  • bin目录下新建mongo.config文件,配置如下内容

    # 数据保存到哪
    storage:
      dbPath: D:\Developer\MongoDB666\mongodb-config-27018\data
      journal:
        enabled: true
    #  engine:
    #  mmapv1:
    #  wiredTiger:
    
    # 日志保存到哪
    systemLog:
      destination: file
      logAppend: true
      path:  D:\Developer\MongoDB666\mongodb-config-27018\log\mongod.log
    
    # 绑定的IP和端口号
    net:
      port: 27018
      bindIp: 127.0.0.1
      
    # 复制集名称
    replication:
      replSetName: 'it666'
    # 复制集的作用
    sharding:
      clusterRole: configsvr // 配置服务器
  • 以上步骤需对三份文件夹都进行配置,且需要换成不同的端口号
  • 注册配置MongoDB,注册服务
  • 分别进入bin目录,以管理员身份打开终端

    mongod --config mongo.config文件路径 --serviceName "服务名称" --serviceDisplayName "显示的服务名称" --install
    
    mongod --config D:\Developer\MongoDB666\mongodb-config-27018\bin\mongo.config --serviceName "MongoDB27018" --serviceDisplayName "MongoDB27018"  --install
    mongod --config D:\Developer\MongoDB666\mongodb-config-27019\bin\mongo.config --serviceName "MongoDB27019" --serviceDisplayName "MongoDB27019"  --install
    mongod --config D:\Developer\MongoDB666\mongodb-config-27020\bin\mongo.config --serviceName "MongoDB27020" --serviceDisplayName "MongoDB27020"  --install
  • 打开任务管理器——服务——启动三台服务器
  • 手动启动服务,测试连接

    mongo --host 127.0.0.1 --port 27018
    mongo --host 127.0.0.1 --port 27019
    mongo --host 127.0.0.1 --port 27020
  • 初始化复制集(任意一台服务器执行即可)

    rs.initiate({
    _id: 'it666',
    configsvr: true, // 配置服务器
    members: [
        {_id: 0, host: '127.0.0.1:27018'},
        {_id: 1, host: '127.0.0.1:27019'},
        {_id: 2, host: '127.0.0.1:27020'}]
    })

  • 搭建分片服务器集群

  • 解压三份MongoDB安装包(三台MongoDB分片服务器),分别命名:mongodb-shard-27021、mongodb-shard-27022、mongodb-shard-27023
  • 在安装目录下新建data和log文件夹
  • log目录下新建mongo.log文件
  • bin目录下新建mongo.config文件,配置如下内容

    # 数据保存到哪
    storage:
      dbPath: D:\Developer\MongoDB666\mongodb-shard-27021\data
      journal:
        enabled: true
    #  engine:
    #  mmapv1:
    #  wiredTiger:
    
    # 日志保存到哪
    systemLog:
      destination: file
      logAppend: true
      path:  D:\Developer\MongoDB666\mongodb-shard-27021\log\mongod.log
    
    # 绑定的IP和端口号
    net:
      port: 27021
      bindIp: 127.0.0.1
      
    # 复制集名称
    replication:
      replSetName: 'itzb'
    # 复制集的作用
    sharding:
      clusterRole: shardsvr // 分片服务器
  • 以上步骤需对三份文件夹都进行配置,且需要换成不同的端口号
  • 注册配置MongoDB,注册服务
  • 分别进入bin目录,以管理员身份打开终端

    mongod --config mongo.config文件路径 --serviceName "服务名称" --serviceDisplayName "显示的服务名称" --install
    
    mongod --config D:\Developer\MongoDB666\mongodb-shard-27021\bin\mongo.config --serviceName "MongoDB27021" --serviceDisplayName "MongoDB27021"  --install
    mongod --config D:\Developer\MongoDB666\mongodb-shard-27022\bin\mongo.config --serviceName "MongoDB27022" --serviceDisplayName "MongoDB27022"  --install
    mongod --config D:\Developer\MongoDB666\mongodb-shard-27023\bin\mongo.config --serviceName "MongoDB27023" --serviceDisplayName "MongoDB27023"  --install
  • 打开任务管理器——服务——启动三台服务器
  • 手动启动服务,测试连接

    mongo --host 127.0.0.1 --port 27021
    mongo --host 127.0.0.1 --port 27022
    mongo --host 127.0.0.1 --port 27023
  • 初始化复制集(任意一台服务器执行即可)

    rs.initiate({
    _id: 'itzb',
    members: [
        {_id: 0, host: '127.0.0.1:27021'},
        {_id: 1, host: '127.0.0.1:27022'},
        {_id: 2, host: '127.0.0.1:27023'}]
    })

  • 搭建路由服务器

  • 解压一份MongoDB安装包(一台MongoDB路由服务器),命名为:mongodb-router-27024
  • 在安装目录下新建log文件夹(路由服务器不保存数据,不用创建data文件夹)
  • log目录下新建mongo.log文件
  • bin目录下新建mongo.config文件,配置如下内容

    # 日志保存到哪
    systemLog:
      destination: file
      logAppend: true
      path:  D:\Developer\MongoDB666\mongodb-router-27024\log\mongod.log
    
    # 绑定的IP和端口号
    net:
      port: 27024
      bindIp: 127.0.0.1
      
    # 指定对应配置服务器的复制集地址
    sharding:
      configDB: it666/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020 // 复制集名/服务器地址
  • 注册配置MongoDB,注册服务
  • 分别进入bin目录,以管理员身份打开终端

    • 注意:以下指令是mongos开头
    mongos --config mongo.config文件路径 --serviceName "服务名称" --serviceDisplayName "显示的服务名称" --install
    
    mongos  --config D:\Developer\MongoDB666\mongodb-router-27024\bin\mongo.config --serviceName "MongoDB27024" --serviceDisplayName "MongoDB27024"  --install
  • 打开任务管理器——服务——启动路由服务器
  • 手动启动服务,测试连接

    mongo --host 127.0.0.1 --port 27024
  • 添加分片服务器

    sh.addShard( "itzb/127.0.0.1:27021") // 复制集名/服务器地址
    sh.addShard( "itzb/127.0.0.1:27022")
    sh.addShard( "itzb/127.0.0.1:27023")
  • 给指定数据库开启分片

    • 注意:默认情况下,集合数据不会分片,均保存在主分片中
    sh.enableSharding("demo") // 数据库名
  • 给指定数据库中的集合指定分片片键

    sh.shardCollection("demo.user",{'age':1}) // 以字段作为分片片键
    sh.shardCollection("demo.user",{'name':hashed}) // 以字段的哈希值作为分片片键

最后修改:2021 年 05 月 12 日 12 : 42 AM
如果觉得我的文章对你有用,请随意赞赏!