zoukankan      html  css  js  c++  java
  • MongoDB部署实战(一)MongoDB在windows平台分片集群部署

    前言-为什么我要使用mongodb

    最近我公司要开发一个日志系统,这个日志系统包括很多类型,错误的,操作的,...用MongoDB存储日志,大量的日志产生,大量读写吞吐量很大的时候,单个Server很难满足需求,这里就要用到mongodb分片集群

    一、MongoDB的分片简介

    分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程。有时也用分区(partitioning)来表示这个概念。

    11204441-e827a77a358d46288574c09227d11d28.png

    请先安装MongoDB成功后继续本操作

    二、先来了解一下分片的组成

    --片

    片是保存子集数据的容器,片可是单个Mongod服务器,也可以是副本集。

    --mongos

    mongos就是MongoDB各版本中都配的路由器进程。它路由所有请求,然后将结果聚合。它本身并不存储数据或者配置信息。

    --配置服务器

    配置服务器存储了集群的配置信息:数据和片的对应关系。Mongos不永久存放数据,所有需要个地方存放分片配置。它会从配置服务器获取同步数据。

    三、动手操作

    1.首先建立测试程序需要的文件夹(MongoDB/data/)

    这里我的文件夹配置

    D:/MongoDB/data/config  配置服务器

    D:/MongoDB/data/shard1 分片1

    D:/MongoDB/data/shard2 分片2

    2.启动和配置服务器

    1
    Mongod --dbpath d:/mongodb/data/config --port 20000

    3.建立mongos进程,以供应用程序连接

    1
    Mongos --port 30000 --configdb localhost:20000

    分片管理都是由mongos完成的

    4.添加片

    启动分片一

    1
    Mongod --dbpath d:mongodb/data/shard1 --port 10000

    启动分片二

    1
    Mongod --dbpath d:mongodb/data/shard2 --port 10001

    这里你可以添加多个片,这里我就只添加两个片

    连接刚才启动的mongos,为集群添加片,启动shell输入一下命令

    1
    Mongo localhost:30000/admin

     QQ截图20150112111822.png

    添加刚才配置的片

    1
    2
    db.runCommand({addshard:”localhost:10000”,allowLocal:true})
    db.runCommand({addshard:”localhost:10001”,allowLocal:true})

    添加分片.png

    上图错误是博主写文章的时候分片已经条件过了导致的 

    分片已经添加完成后,我们现在要让mongodb切分一下数据,首先先要添加需要切分的数据库

    1
    db.runCommand({“enablesharding”:”foo”})

    对数据库切分后,内部的集合就会存储到不同的片

    对库添加了切分条件,我们还需要对集合切分,下面的列子是按照“_id”为基准对foo下面的test集合切分数据

    1
    db.runCommand({“shardcollection”:”foo.test”,”key”:{“_id”:1}})

    这样在test中添加数据,集合就会按照“_id”分散到各个分片上了

    现在我们来测试一下刚才分片的数据

    使用use命令切换到分片的库上。

    1
    use foo

    循环插入10W条数据查看一下分片的结果

    1
    for(i=0;i<100000;i++){ db.test.insert({"Uid":i,"Date":new Date()}); }

    同时查看分片1和分片2看看数据是不是平均分布了

    四、可能导致的错误列表

    1. 连接某个分片或者服务器连接不上错误:10061

        开启了服务器请勿关闭窗口,按照上面的操作应该存在5个窗口

        QQ截图20150112135049.png

    以上文章理论资料参考《Mongodb权威指南》

  • 相关阅读:
    五种方法实现python3-随机生成10位包含数字和字母的密码
    用matplotlib中imshow()函数绘图
    MTNET 自用ios网络库开源
    移动时代软件测试团队该往哪里去?
    自己做的加速app测试流程的小工具,目前打算开放使用,想注册的朋友抓紧了,嘻嘻
    golang append
    Invalid Image Path
    xcode 插件之KSImageNamed-Xcode
    dissmiss a UISearchBar with an SearchBarController
    nginx server_name
  • 原文地址:https://www.cnblogs.com/hx764208769/p/4260177.html
Copyright © 2011-2022 走看看