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

MongoDB 实战笔记 第01期:5.x 副本集部署

悦专栏 2021-10-28
1559

从这一期开始,将分几期聊聊 MongoDB 的一些基础实战经验,包括副本集、备份、常用命令等。欢迎关注“悦专栏”公众号,第一时间接收系列文章。

由于能力有限,系列文章难免会存在错误或者遗漏,如果您有任何建议,可以加文末“小悦”微信进行私信或进 MongoDB 交流群讨论,我们会第一时间进行反馈。

1 架构介绍

这篇文章介绍的是 Primary + Secondary + Arbiter 的架构,架构图如下:

Secondary 持续复制 Primary 节点的数据;Arbiter 用于心跳检测和选举,不接收数据。

实验环境:

节点角色环境
192.168.150.123Primary CentOS 7.4、MongoDB 5.0.2
192.168.150.232SecondaryCentOS 7.4、MongoDB 5.0.2
192.168.150.253ArbiterCentOS 7.4、MongoDB 5.0.2


2 配置 yum 源

在三台机器配置 yum 源:

    vim /etc/yum.repos.d/mongo.repo
    复制

    加入如下内容:

      [mongodb-org-5.0]
      name=MongoDB Repository
      baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
      gpgcheck=1
      enabled=1
      gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
      复制


      3 安装 mongoDB

        yum install -y mongodb-org
        复制


        4 创建文件夹

          mkdir -p data/{mongodb27001/data/configdb,mongodb27001/data/sharddb,mongodb27001/conf,mongodb27001/run,mongodb27001/logs}
          复制


          5 编辑配置文件

            vim data/mongodb27001/conf/mongod.conf
            复制
            加入如下内容:
            复制
              systemLog:
              destination: file
              logAppend: true
              path: /data/mongodb27001/logs/mongod.log
              storage:
              dbPath: /data/mongodb27001/data
              journal:
              enabled: true
              processManagement:
              fork: true # fork and run in background
              pidFilePath: /data/mongodb27001/run/mongod.pid # location of pidfile
              timeZoneInfo: /usr/share/zoneinfo
              net:
              port: 27001
              bindIp: 0.0.0.0
              复制


              6 配置 keyfile

              在其中一台机器执行下面语句

                openssl rand -base64 745 > /data/mongodb27001/conf/keyfile


                chmod 600 data/mongodb27001/conf/keyfile
                复制

                然后将生成的 keyfile 复制到另外两台机器的 data/mongodb27001/conf/ 目录下。


                7 启动 MongoDB

                  mongod -f data/mongodb27001/conf/mongod.conf
                  复制
                  登录 MongoDB
                  复制
                    mongo --port 27001
                    复制


                    8 用户创建

                    创建管理员账户

                      use admin


                      db.createUser(
                      {
                      user: "root",
                      pwd: "xxxxxx",
                      roles: [ { role: "root",db:"admin" } ]
                      }
                      )
                      复制

                      创建业务用户

                        use xxx
                        # xxx 表示业务使用的 DB


                        db.createUser(
                        {
                        user: "xxx_user",
                        pwd: "xxxxxx",
                        roles: [ { role: "readWriteAnyDatabase",db:"admin" } ]
                        }
                        )
                        复制


                        9 增加集群配置

                        编辑配置文件:

                          vim data/mongodb27001/conf/mongod.conf
                          复制
                          增加集群及认证相关配置:
                          复制
                            systemLog:
                            destination: file
                            logAppend: true
                            path: /data/mongodb27001/logs/mongod.log
                            storage:
                            dbPath: /data/mongodb27001/data
                            journal:
                            enabled: true
                            processManagement:
                            fork: true # fork and run in background
                            pidFilePath: /data/mongodb27001/run/mongod.pid # location of pidfile
                            timeZoneInfo: /usr/share/zoneinfo
                            net:
                            port: 27001
                            bindIp: 0.0.0.0
                            replication:
                            oplogSizeMB: 4096
                            replSetName: xxx_repl
                            security:
                            authorization: enabled
                            clusterAuthMode: keyFile
                            keyFile: /data/mongodb27001/conf/keyfile
                            复制


                            10 重启服务

                            登录 MongoDB

                              mongo --port 27001 -uroot -pxxxxxx admin
                              复制

                              关闭 MongoDB

                                db.shutdownServer()
                                复制

                                重新启动 MongoDB

                                  mongod -f data/mongodb27001/conf/mongod.conf
                                  复制


                                  11 创建集群

                                  在第一个节点上登录 MongoDB:

                                    mongo --port 27001 -uroot -pxxxxxx admin
                                    复制


                                    执行下面命令增加集群配置:

                                      config={
                                      _id:'xxx_repl',
                                      members:[
                                      {_id: 0, host: '192.168.150.123:27001',priority:1},
                                      {_id: 1, host: '192.168.150.232:27001',priority:1},
                                      {_id: 2, host: '192.168.150.253:27001',arbiterOnly:true},
                                      ]
                                      }
                                      复制


                                      初始化配置

                                        rs.initiate(config)
                                        复制


                                        12 查看集群

                                          rs.status()
                                          复制

                                          如果一切顺利,就可以看到如下结果:

                                            {
                                            "set" : "xxx_repl",
                                            ......
                                            "members" : [
                                            {
                                            "_id" : 0,
                                            "name" : "192.168.150.123:27001",
                                            "health" : 1,
                                            "state" : 1,
                                            "stateStr" : "PRIMARY",
                                            ......
                                            },
                                            {
                                            "_id" : 1,
                                            "name" : "192.168.150.232:27001",
                                            "health" : 1,
                                            "state" : 2,
                                            "stateStr" : "SECONDARY",
                                            ......
                                            },
                                            {
                                            "_id" : 2,
                                            "name" : "192.168.150.253:27001",
                                            "health" : 1,
                                            "state" : 7,
                                            "stateStr" : "ARBITER",
                                            ......
                                            }
                                            ......
                                            }
                                            复制

                                            到这里,MongoDB 5.x 副本集就搭建完成啦。


                                            欢迎加入 MongoDB 交流群,入群请添加下方群秘微信,备注“MongoDB”,等待群秘邀你入群。



                                            LIKECOLUMN

                                            悦专栏



                                            悦专栏 ,从小白到大神的起点



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

                                            评论