暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MongoDB 单机部署多副本集

爱学习de小馋猫 2020-04-15
1365

最近在参加MongoDB的培训,就用以前的环境搭一下多副本集,感觉挺简单的,不知道是不是我搞错了,先记录下来后面有问题再改吧。


安装好Mongo,可参考之前的文章Linux平台安装MongoDB


进入安装目录

    cd usr/local/mongodb

    在当前目录下创建三个rs

      ljing@ubuntu:/usr/local/mongodb$ mkdir -p rs0/data/db
      ljing@ubuntu:/usr/local/mongodb$ mkdir -p rs1/data/db
      ljing@ubuntu:/usr/local/mongodb$ mkdir -p rs2/data/db

      再分别创建三个log目录

        ljing@ubuntu:/usr/local/mongodb$ mkdir -p rs0/log
        ljing@ubuntu:/usr/local/mongodb$ mkdir -p rs1/log
        ljing@ubuntu:/usr/local/mongodb$ mkdir -p rs2/log

        创建三个配置文件 mongodb.cfg  放置在 usr/local/mongodb/rs0 和 rs1 rs2 下

        注意修改路径和端口,我配置的 27017 27018 和 27019

          dbpath=/usr/local/mongodb/rs0/data/db
          logpath=/usr/local/mongodb/rs0/log/mongo.log
          logappend=true
          port=27017
          fork=true
          auth=false
          bind_ip=192.168.128.130
          journal=true
          quiet=true
          replSet=upmsSet

          开启三个mongo

            ljing@ubuntu:/usr/local/mongodb/bin$ ./mongod -f ../rs0/mongodb.cfg 
            about to fork child process, waiting until server is ready for connections.
            forked process: 2859
            child process started successfully, parent exiting
            ljing@ubuntu:/usr/local/mongodb/bin$
            ljing@ubuntu:/usr/local/mongodb/bin$ ./mongod -f ../rs1/mongodb.cfg
            about to fork child process, waiting until server is ready for connections.
            forked process: 2953
            child process started successfully, parent exiting
            ljing@ubuntu:/usr/local/mongodb/bin$
            ljing@ubuntu:/usr/local/mongodb/bin$ ./mongod -f ../rs2/mongodb.cfg
            about to fork child process, waiting until server is ready for connections.
            forked process: 2973
            child process started successfully, parent exiting

            登陆其中一个

              ljing@ubuntu:/usr/local/mongodb/bin$ ./mongo 192.168.128.130
              MongoDB shell version: 3.0.6
              connecting to: 192.168.128.130/test

              查看下数据库

                > show databases;
                2020-04-15T06:03:43.142-0700 E QUERY Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }
                at Error (<anonymous>)
                at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
                at shellHelper.show (src/mongo/shell/utils.js:630:33)
                at shellHelper (src/mongo/shell/utils.js:524:36)
                at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47

                show databases 报错,因为还没初始化

                  > use admin 
                  switched to db admin

                  定义副本集配置变量,这里的 _id:”upmsSet” 和上面配置文件的参数“ replSet=upmsSet” 要保持一样

                    > config= {_id:"upmsSet",members:[ 
                    ... ... {_id:0,host:"192.168.128.130:27017"},
                    ... ... {_id:1,host:"192.168.128.130:27018"},
                    ... ... {_id:2,host:"192.168.128.130:27019"}]
                    ... ... }
                    {
                    "_id" : "upmsSet",
                    "members" : [
                    {
                    "_id" : 0,
                    "host" : "192.168.128.130:27017"
                    },
                    {
                    "_id" : 1,
                    "host" : "192.168.128.130:27018"
                    },
                    {
                    "_id" : 2,
                    "host" : "192.168.128.130:27019"
                    }
                    ]
                    }

                    初始化

                      > rs.initiate(config);
                      { "ok" : 1 }
                      upmsSet:OTHER>
                      upmsSet:SECONDARY>
                      upmsSet:SECONDARY>
                      upmsSet:PRIMARY>

                      查看状态

                        upmsSet:PRIMARY> rs.status()
                        {
                        "set" : "upmsSet",
                        "date" : ISODate("2020-04-15T13:20:26.543Z"),
                        "myState" : 1,
                        "members" : [
                        {
                        "_id" : 0,
                        "name" : "192.168.128.130:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 15957,
                        "optime" : Timestamp(1586956816, 1),
                        "optimeDate" : ISODate("2020-04-15T13:20:16Z"),
                        "electionTime" : Timestamp(1586956819, 1),
                        "electionDate" : ISODate("2020-04-15T13:20:19Z"),
                        "configVersion" : 1,
                        "self" : true
                        },
                        {
                        "_id" : 1,
                        "name" : "192.168.128.130:27018",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 10,
                        "optime" : Timestamp(1586956816, 1),
                        "optimeDate" : ISODate("2020-04-15T13:20:16Z"),
                        "lastHeartbeat" : ISODate("2020-04-15T13:20:26.377Z"),
                        "lastHeartbeatRecv" : ISODate("2020-04-15T13:20:26.404Z"),
                        "pingMs" : 0,
                        "configVersion" : 1
                        },
                        {
                        "_id" : 2,
                        "name" : "192.168.128.130:27019",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 10,
                        "optime" : Timestamp(1586956816, 1),
                        "optimeDate" : ISODate("2020-04-15T13:20:16Z"),
                        "lastHeartbeat" : ISODate("2020-04-15T13:20:26.377Z"),
                        "lastHeartbeatRecv" : ISODate("2020-04-15T13:20:26.360Z"),
                        "pingMs" : 0,
                        "lastHeartbeatMessage" : "could not find member to sync from",
                        "configVersion" : 1
                        }
                        ],
                        "ok" : 1
                        }


                        完成


                        参考文章:https://www.jianshu.com/p/beebe1f50fc3

                        文章转载自爱学习de小馋猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论