MongoDB分布式数据库的搭建

分片搭建

  1. 由于在一台机器上搭建mongo集群,计划搭建两个分片,我们为每个分片分配了三个节点,分别对应三个端口

    ​ 这个是分片的目录结构

1566529442047.png

​ 这个是分片的目录结构

  1. 分别为每个node配置conf文件

文件配置内容如下

replSet=shard1    //指定副本集名
shardsvr = true    //指定该服务为分片服务
logpath=/home/bertzhou/mongo-colony/shards/shards1/node1/node1.log    //日志存放地址
logappend=true   //日志追加
fork=true    //作为后台进程开启
port=27007   //指定服务监听端口
dbpath=/home/bertzhou/mongo-colony/shards/shards1/node1    //数据库地址
pidfilepath=/home/bertzhou/mongo-colony/shards/shards1/node1/node1.pid    //pid文件存放地址

配置完成后我们使用mongod -f [path] 命令分别启动三个节点

[path] 为每个节点的配置文件

启动结果如下:

1566529260538.png
    我们可以看到27007、27008、27009三个端口分别启动了mongodb的服务

3.创建分片的副本集

​ 使用mongo -prot [port] 命令连接任意一台服务器

​ 注意: 如果不是在本地部署则需要加入-h [host] 指定主机名

​ [port]为指定服务器的端口号

1566530666924.png

连接成功之后我们就可以看到出现了mongo命令行的界面

然后在mongo命令行中输入分片副本集的配置命令是

  
var rsconf={                  //定义一个变量来存放副本级结构
    _id:"shard1",           //副本级的名字    要和节点配置文件conf中的replSet中的名字相同
    members:
    [
        {
        _id:1,                      //服务器编号
        host:"127.0.0.1:27010"       //服务器地址
        },
        {
        _id:2,
        host:"127.0.0.1:27011"
        },
        {
        _id:3,
        host:"127.0.0.1:27012"
        }
    ]
}
rs.initiate(rsconf)

配置副本集成功之后我们可以看到mongo会返回建立副本集成功的消息,并选举出了一个主节点和从节点、还有一个备用节点

1566539984389.png

shard2的配置方法和shard1一直,重复之前操作即可

configserver搭建

​ configserver用于配置管理,里面存储了mongo分片中的元数据信息,mongos路由在查询数据时需

要先去找configserver了解数据对应存储在哪个分片上,然后再取shard分片中查询数据。

  1. configserver的服务同样使用三个服务来做一个集群,用到的端口是27018、20019、27020

    下面是cofigserver的文件结构

1566541842736.png
  1. 同样我们为configserver添加配置文件

    配置文件如下

    systemLog:
      destination: file     
      logAppend: true
      path: "/home/bertzhou/mongo-colony/config-servers/node1/node1.log" 
    storage:
      dbPath: "/home/bertzhou/mongo-colony/config-servers/node1"
      journal:
        enabled: true
    processManagement:
      fork: true
    net:
      port: 27018
      bindIp: 127.0.0.1
    replication:
      replSetName: config-servers
    sharding:
      clusterRole: configsvr
    

    这里的配置文件为yaml格式的配置文件,mongo4.0之后开始使用yaml格式的配置文件,当然也兼

    容之前的写法。注意:yaml格式的文件有严格的格式,如果是子字段的话需要2个空格缩进,使用t

    ab是会报错的

    1. 使用mongod -f 命令启动 configserver
1566543542614.png

开启了27018、27019、27020端口

  1. 然后使用mongo连接任意的configserver数据库

输入配置副本集命令,建立集群

  rs.initiate(
    {
        _id:"config-servers",    //这里的id是conf文件中配置的replSetName
        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"},
        ]
    }
 )

完成之后就可以看到命令行中出现了primary 或者是secondary的字段

1566543958186.png

mongos配置

mongos在mongo分布式中起路由的作用,客户端需要查询数据直接连接到mongos就能查询数据。

mongos的集群这里不做搭建,我们只用一个mongos服务

  1. 配置mongos的conf

    1. systemLog:
         destination: file
         logAppend: true
         path: /home/bertzhou/mongo-colony/mongos/mongos.log
       processManagement:
         fork: true
       net:
         port: 27017
         bindIp: 127.0.0.1
       sharding:
         configDB: config-servers/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020  
         //这里需要配置configserver集群的地址
    
    
  2. 启动mongos服务

    使用mongos -f [path] 命令启动

    注意:mongos是一个专门的命令,用mongod打开是会报错的

1566545167486.png

可以看到27017端口运行了mongos服务

  1. 连接mongos服务,连接成功后发现mongo客户端命令行会出现mongos的字段

  2. 输入shards的配置命令,为mongos添加分片集群

    在mongos中切换admin数据库,然后添加命令

    db.runCommand({
        addshard:
        "shard1/127.0.0.1:27007,127.0.0.1:27008,127.0.0.1:27009",name:"shard1"
    }) 
    db.runCommand({
        addshard:
        "shard2/127.0.0.1:27010,127.0.0.1:27011,127.0.0.1:27012",name:"shard2"
    }) 
    
1566547043199.png

这样mongo的分布式就搭建完成了

我们可以在mongos上进行一些基本操作了。

补充

mongo服务器如果使用kill -9 [pid]命令会导致第二次启动失败。

可以使用mongo命令登录之后使用db.shutdown()命令关闭进程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,563评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,694评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,672评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,965评论 1 318
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,690评论 6 413
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 56,019评论 1 329
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 44,013评论 3 449
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,188评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,718评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,438评论 3 360
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,667评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,149评论 5 365
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,845评论 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,252评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,590评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,384评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,635评论 2 380