MongoDB集群搭建的整理及出错整理

来源:互联网 发布:好家长软件 编辑:程序博客网 时间:2024/05/21 05:37

之前搭建过集群,现在重新搭建,竟然花费了我一晚上时间,不就这边出错,就是那边少东西,头疼,还是趁热打铁,出一份完整的搭建教程

一、几个比较常用的linux语句:

1、查看主机的线程:

ps aux|grep mongo (查看mongo线程)

kill XX(杀死线程)

2、新建文件及文件夹:

touch XX(新建文件)

mkdir XXX(新建文件夹)

3、删除文件及文件夹;

rm XX(删除文件) 或者rm -r XXX

rm -r XX(删除文件夹,必须加-r)


二、常见的问题

1、secureCRT软件中如果出现了不能删除字符的情况,需要设置一下:

选项--会话选项---终端---仿真--终端(选择Linux)即可


三、开始集群的搭建

1、配置;

192.168.0.75 :27016  rs1/mongod       :27018  mongos

192.168.0.76:27016  rs2mongod         :27018  config

192.168.0.77:27016  rs3/mongod

2、开始:

A 配置config节点,配置文件mongo.conf 如下所示;

storage:
    dbPath: "/home/dmcl165/mongodb/zlp/mongo/data/node"
    engine: wiredTiger

systemLog:
    destination: file
    path: "/home/dmcl165/mongodb/zlp/mongo/log/mongodb.log"
    logAppend: true

net:
    bindIp: 192.168.0.76
    port: 27018

processManagement:
    pidFilePath: "/home/dmcl165/mongodb/zlp/mongo/run/mongodb.pid"

    fork: true

replication:
    replSetName: rscfg

sharding:
    clusterRole: configsvr

启动config节点(转到源码下面运行,或者转到mongodbTools/bin下直接运行):

./mongod --config /home/dmcl165/mongo/zlp/mongo.conf


因为config节点是一个单独的复制集rscfg,所以需要进入config节点进行设置,否则会出错:

./mongo 192.168.0.76:27018

>rs.status()

>cfg = {_id: 'rscfg', members: [

{_id: 0, host: '192.168.0.76:27018'}]}
>rs.initiate(cfg)
>rs.status()
出现rscfg:PRIMARY> 即可完成

实例:
>cfg = {_id: 'rs3', members: [
{_id: 0, host: '192.168.1.79:27017'},
{_id: 1, host: '192.168.1.27:27017'},
{_id: 1, host: '192.168.1.22:27017'}
]}


B、启动三个shard节点,配置文件mongod.conf如下所示(三个节点属于三个不同的复制集rs1,rs2,rs3):

   rs1配置文件:

storage:
    dbPath: "/home/dmcl217/mongo/zlpmd/data/node"

systemLog:
    destination: file
    path: "/home/dmcl217/mongo/zlpmd/log/mongodb.log"
    logAppend: true

net:
    bindIp: 192.168.0.75,127.0.0.1
    port: 27016

processManagement:
    pidFilePath: "/home/dmcl217/mongo/zlpmd/run/mongodb.pid"
    fork: true


replication:
    replSetName: rs1

sharding:
    clusterRole: shardsvr


  rs2配置文件:

storage:
    dbPath: "/home/dmcl165/mongodb/zlpmd/data/node"
    engine: wiredTiger

systemLog:
    destination: file
    path: "/home/dmcl165/mongodb/zlpmd/log/mongodb.log"
    logAppend: true

net:
    bindIp: 192.168.0.76,127.0.0.1
    port: 27016

processManagement:
    pidFilePath: "/home/dmcl165/mongodb/zlpmd/run/mongodb.pid"

    fork: true


replication:
    replSetName: rs2

sharding:
    clusterRole: shardsvr


rs3配置文件:

storage:
    dbPath: "/home/dmcl305/mongo/zlpmd/data/node"

systemLog:
    destination: file
    path: "/home/dmcl305/mongo/zlpmd/log/mongodb.log"
    logAppend: true

net:
    bindIp: 192.168.0.77,127.0.0.1
    port: 27016

processManagement:
    pidFilePath: "/home/dmcl305/mongo/zlpmd/run/mongodb.pid"
    fork: true


replication:
    replSetName: rs3

sharding:
    clusterRole: shardsvr

依次启动三个节点(转到源码下面运行,或者转到mongodbTools/bin下直接运行):

./mongod --config  /home/dmcl305/mongo/zlp/mongod.conf


因为三个shard节点是分别一个单独的复制集rs1,rs2,rs3,所以需要进入分别进入shard节点进行设置,否则会出错(演示一个即可):

./mongo 192.168.0.75:27016

>rs.status()

>cfg = {_id: 'rs1', members: [

{_id: 0, host: '192.168.0.75:27016'}]}
>rs.initiate(cfg)
>rs.status()
出现rs1:PRIMARY> 即可完成(其他两个相同的设置)

C、启动mongos节点,配置文件mongos.conf如下所示:

systemLog:
    destination: file
    path: "/home/dmcl217/mongo/zlp/log/mongodb.log"
    logAppend: true

net:
    bindIp: 192.168.0.75
    port: 27018

processManagement:
    pidFilePath: "/home/dmcl217/mongo/zlp/run/mongodb.pid"
    fork: true
sharding:
    configDB: rscfg/192.168.0.76:27018


启动mongos 节点(转到源码下面运行,或者转到mongodbTools/bin下直接运行):

./mongos --config /home/dmcl217/mongo/zlp/mongos.conf

进入mongos节点进行配置:
>./mongo 192.168.0.75:27018
进行分片:
分别添加三个分区
>sh.addShard("rs1/192.168.0.75:27016")

>sh.addShard("rs2/192.168.0.76:27016")

>sh.addShard("rs3/192.168.0.77:27016")

执行sh.status()查看分区状态,可以看到有三个分区(图片为转载)

至此,集群搭建完成。

对数据库进行分片设置
use admin

db.runCommadn({"enablesharding":"dbname"})

db.runCommand({"shardcollection":"db.col", "key":{"shardkey":1}})
或者
db.runCommand({"shardcollection":"db.col", "key":{"shardkey":"hashed"}})

例子:
db.runCommadn({"enablesharding":"dmcl"})

db.runCommand({"shardcollection":"dmcl.user", "key":{"_id":"hashed"}})

总结一下我搭建的时候出现的错误:
1、配置文件出错,粗心了

2、这个是因为config节点没有搭建复制集,需要设置成PRIMARY形式,进入设置,rs.ininate(cfg)那一步

其实好多都是配置文件出错,然后shard节点和config节点因为都有复制集,所以都需要先进入设置成PRIMARY形式,然后再由mongos添加分片
3、又新出了一个问题,当远程连接软件关闭后,集群就不能用了,没有设置集群的后台设置,用fork:true设置,在配置文件中修改
4、对于mongoTools工具的使用,进入该文件夹,进入bin文件,其中包括了mongo\mongod\mongos的执行命令,所以,使用的例子如下所示:
>mongoTools/bin>./mongod --config /home/dmcl217/mongo/zlp/mongo.conf
直接使用即可

原创粉丝点击