mongodb伪集群(单机集群)搭建

①、解压

[root@jianshu ~]# tar -zxvf mongodb-linux-x86_64-4.0.13.tgz -C /usr/local/

[root@jianshu ~]# mv mongodb-linux-x86_64-4.0.13 /usr/local/

[root@jianshu ~]# ln -s /usr/local/mongodb/bin/* /usr/bin/

②、创建伪集群存放目录mdb1、mdb2、mdb3和其子目录logs、data/db、key

[root@jianshu ~]# mkdir -pv /data/mongodbs/

[root@jianshu ~]# cd  /data/mongodbs/

[root@jianshu ~]# mkdir -pv mkdir -pv mdb{1,2,3}/{logs,data/db,key}

③、生成key(集群之间的安全认证,3个需一致)

[root@jianshu ~]# openssl rand -base64 745 > /data/mongodbs/mdb1/key/keyfile

[root@jianshu ~]# chmod 600 /data/mongodbs/mdb1/key/keyfile

[root@jianshu ~]# cp /data/mongodbs/mdb1/key/keyfile /data/mongodbs/mdb2/key/

[root@jianshu ~]# cp /data/mongodbs/mdb1/key/keyfile /data/mongodbs/mdb3/key/

④、配置

集群1配置:

[root@jianshu ~]# cat /data/mongodbs/mdb1/mongodb.conf

systemLog:

  destination: file

path: "/data/mongodbs/mdb1/logs/mongod.log"

  logAppend: true

processManagement:

  fork: true

pidFilePath: "/data/mongodbs/mdb1/mongod.pid"

net:

  bindIp: 0.0.0.0

port:27018

  maxIncomingConnections: 10000

storage:

dbPath: "/data/mongodbs/mdb1/data/db"

  journal:

    enabled: true

  engine: wiredTiger

  directoryPerDB: true

replication:

  oplogSizeMB: 50

replSetName: "mdbcluster"

#注:如果配置security的keyFile,则开启了授权认证,则不能添加用户,如果要添加用户可以先暂时关闭

security:

keyFile: "/data/mongodbs/mdb1/key/keyfile"

  clusterAuthMode: "keyFile"

集群2配置:

[root@jianshu ~]# cat /data/mongodbs/mdb2/mongodb.conf

systemLog:

  destination: file

path: "/data/mongodbs/mdb2/logs/mongod.log"

  logAppend: true

processManagement:

  fork: true

pidFilePath: "/data/mongodbs/mdb2/mongod.pid"

net:

  bindIp: 0.0.0.0

port:27019

  maxIncomingConnections: 10000

storage:

dbPath: "/data/mongodbs/mdb2/data/db"

  journal:

    enabled: true

  engine: wiredTiger

  directoryPerDB: true

replication:

  oplogSizeMB: 50

replSetName: "mdbcluster"

#注:如果配置security的keyFile,则开启了授权认证,则不能添加用户,如果要添加用户可以先暂时关闭

security:

keyFile: "/data/mongodbs/mdb3/key/keyfile"

  clusterAuthMode: "keyFile"

集群3配置:

[root@jianshu ~]# cat /data/mongodbs/mdb3/mongodb.conf

systemLog:

  destination: file

path: "/data/mongodbs/mdb3/logs/mongod.log"

  logAppend: true

processManagement:

  fork: true

pidFilePath: "/data/mongodbs/mdb3/mongod.pid"

net:

  bindIp: 0.0.0.0

port:27020

  maxIncomingConnections: 10000

storage:

dbPath: "/data/mongodbs/mdb3/data/db"

  journal:

    enabled: true

  engine: wiredTiger

  directoryPerDB: true

replication:

  oplogSizeMB: 50

replSetName: "mdbcluster"

#注:如果配置security的keyFile,则开启了授权认证,则不能添加用户,如果要添加用户可以先暂时关闭

security:

keyFile: "/data/mongodbs/mdb3/key/keyfile"

  clusterAuthMode: "keyFile"

⑤、启动3个集群集群

[root@jianshu ~]# /usr/local/mongodb/bin/mongod -f /data/mongodbs/mdb1/mongodb.conf

[root@jianshu ~]# /usr/local/mongodb/bin/mongod -f /data/mongodbs/mdb2/mongodb.conf

[root@jianshu ~]# /usr/local/mongodb/bin/mongod -f /data/mongodbs/mdb3/mongodb.conf

⑥、查看启动状态

[root@jianshu ~]# netstat -lnpt | egrep "270"

tcp        0      0 0.0.0.0:27018          0.0.0.0:*              LISTEN      10762/mongod       

tcp        0      0 0.0.0.0:27019          0.0.0.0:*              LISTEN      10827/mongod       

tcp        0      0 0.0.0.0:27020          0.0.0.0:*              LISTEN      10869/mongod

⑦、配置集群

[root@jianshu ~]# mongo -port 27018

MongoDB shell version v4.0.13

connecting to: mongodb://127.0.0.1:27018/?gssapiServiceName=mongodb

Implicit session: session { "id" : UUID("da5e47a0-319d-4081-ae47-2c58ace5add2") }

MongoDB server version: 4.0.13

>use admin

switched to db admin

>config={ _id:"mdbcluster", 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"} ] }

{

        "_id" : "mdbcluster",

        "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"

                }

        ]

}

>rs.initiate(config);

{ "ok" : 1 }

mdbcluster:SECONDARY>rs.status();

{

        "set" : "mdbcluster",

        "date" : ISODate("2020-10-23T06:34:39.614Z"),

        "myState" : 1,

        "term" : NumberLong(1),

        "syncingTo" : "",

        "syncSourceHost" : "",

        "syncSourceId" : -1,

        "heartbeatIntervalMillis" : NumberLong(2000),

        "optimes" : {

                "lastCommittedOpTime" : {

                        "ts" : Timestamp(1603434879, 5),

                        "t" : NumberLong(1)

                },

                "readConcernMajorityOpTime" : {

                        "ts" : Timestamp(1603434879, 5),

                        "t" : NumberLong(1)

                },

                "appliedOpTime" : {

                        "ts" : Timestamp(1603434879, 5),

                        "t" : NumberLong(1)

                },

                "durableOpTime" : {

                        "ts" : Timestamp(1603434879, 5),

                        "t" : NumberLong(1)

                }

        },

        "lastStableCheckpointTimestamp" : Timestamp(1603434879, 1),

        "members" : [

                {

                        "_id" : 0,

                        "name" : "127.0.0.1:27018",

                        "health" : 1,

                        "state" : 1,

                        "stateStr" : "PRIMARY",

                        "uptime" : 110,

                        "optime" : {

                                "ts" : Timestamp(1603434879, 5),

                                "t" : NumberLong(1)

                        },

                        "optimeDate" : ISODate("2020-10-23T06:34:39Z"),

                        "syncingTo" : "",

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "could not find member to sync from",

                        "electionTime" : Timestamp(1603434878, 1),

                        "electionDate" : ISODate("2020-10-23T06:34:38Z"),

                        "configVersion" : 1,

                        "self" : true,

                        "lastHeartbeatMessage" : ""

                },

                {

                        "_id" : 1,

                        "name" : "127.0.0.1:27019",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 12,

                        "optime" : {

                                "ts" : Timestamp(1603434867, 1),

                                "t" : NumberLong(-1)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1603434867, 1),

                                "t" : NumberLong(-1)

                        },

                        "optimeDate" : ISODate("2020-10-23T06:34:27Z"),

                        "optimeDurableDate" : ISODate("2020-10-23T06:34:27Z"),

                        "lastHeartbeat" : ISODate("2020-10-23T06:34:38.161Z"),

                        "lastHeartbeatRecv" : ISODate("2020-10-23T06:34:39.323Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncingTo" : "",

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "",

                        "configVersion" : 1

                },

                {

                        "_id" : 2,

                        "name" : "127.0.0.1:27020",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 12,

                        "optime" : {

                                "ts" : Timestamp(1603434867, 1),

                                "t" : NumberLong(-1)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1603434867, 1),

                                "t" : NumberLong(-1)

                        },

                        "optimeDate" : ISODate("2020-10-23T06:34:27Z"),

                        "optimeDurableDate" : ISODate("2020-10-23T06:34:27Z"),

                        "lastHeartbeat" : ISODate("2020-10-23T06:34:38.161Z"),

                        "lastHeartbeatRecv" : ISODate("2020-10-23T06:34:39.324Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncingTo" : "",

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "",

                        "configVersion" : 1

                }

        ],

        "ok" : 1,

        "operationTime" : Timestamp(1603434879, 5),

        "$clusterTime" : {

                "clusterTime" : Timestamp(1603434879, 5),

                "signature" : {

                        "hash" : BinData(0,"La+1SisigTTB+RW6X6nguiyVx5U="),

                        "keyId" : NumberLong("6886700366570717185")

                }

        }

}

⑧、附:登录mongo脚本和加入系统命令

[root@jianshu ~]# cat /root/script/mongo-login-27018.sh

/usr/local/mongodb/bin/mongo -port 27018

[root@jianshu ~]# cat /root/script/mongo-login-27019.sh

/usr/local/mongodb/bin/mongo -port 27019

[root@jianshu ~]# cat /root/script/mongo-login-27020.sh

/usr/local/mongodb/bin/mongo -port 27020

[root@jianshu ~]# ln -s /root/script/mongo-login-27018.sh /usr/bin/27018mongo

[root@jianshu ~]# ln -s /root/script/mongo-login-27019.sh /usr/bin/27019mongo

[root@jianshu ~]# ln -s /root/script/mongo-login-27020.sh /usr/bin/27020mongo

⑨、附:创建用户、创建管理员用户、添加数据

样例1,创建普通用户:

> use test

switched to db test

> db.createUser(

... {

... user: "test",

... pwd: "test",

... roles: [ "readWrite"]

... }

... );

Successfully added user: { "user" : "member", "roles" : [ "readWrite" ] }

>

样例2,创建管理员用户:

> use admin

switched to db admin

> db.createUser(

{

user: "root",

pwd: "root",

roles: ["dbAdmin"]

}

);

Successfully added user: { "user" : "root", "roles" : [ "dbAdmin" ] }

>

样例3,添加表数据:

> use test

>db.createCollection('table1');

>db.table1.insert({name:'amu',age:22}) 

> db.table1.find();

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