Mongodb4.0副本集构建

Posted 黎东海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb4.0副本集构建相关的知识,希望对你有一定的参考价值。

目前最新的mongodb4.0.2已经支持事务这个重要特性,需要使用的话必须是复制或副本集,这是第一篇先研发如何构建副本集,因为副本集是目前最低成本的高可用群集方式。

1.准备三台服务器,本次使用是的ubuntu16.04。分别在三台服务器执行如下安装指定,参考官方安装连接:https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu/?_ga=2.66639470.1117419885.1536141422-1139377698.1531391990

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

sudo apt-get update

sudo apt-get install -y mongodb-org

安装完成,以下是检测是否安装完成

sudo apt-get install -y mongodb-org=4.0.2 mongodb-org-server=4.0.2 mongodb-org-shell=4.0.2 mongodb-org-mongos=4.0.2 mongodb-org-tools=4.0.2

2. 三台服务器构建并启动数据库,本示例使用 /usr/mongo目录

mkdir /usr/mongo

chmod –R 777 /usr/mongo

cd /usr/mongo

mkdir data

mkdir log

//构建key file用于群集各数据库间身份验证(必须有此步才可以把最终的数据库登陆身份认证信息同步到各节点中)构建完成后复制key_file文件到各节点相同位置

openssl rand -base64 756 > /data/key_file
chmod 400 /data/key_file

//构建数据库配置文件

vim config.conf

//添加以下配置内容(并复制到各节点相同位置)

```

systemLog:
  destination: file
  path: /usr/mongo/log/mongod.log
  logAppend: true
storage:
  journal:
   enabled: true
  dbPath: /usr/mongo/data
  directoryPerDB: true
  engine: wiredTiger
  wiredTiger:
   engineConfig:
    cacheSizeGB: 2
    directoryForIndexes: true
   collectionConfig:
    blockCompressor: snappy
   indexConfig:
    prefixCompression: true
net:
  bindIp: 0.0.0.0
  port: 27017
  maxIncomingConnections: 40000
replication:
     replSetName: "rs1"
     oplogSizeMB: 1024
security:
     authorization: enabled
     keyFile: /usr/mongo/data/key_file

```

//构建log数据库日志文件

vim log/mongod.log

3.分别在三台服务器以免身份验证方式启动数据库

mongod –f config.conf

4.生效副本集(只需要在主节点操作一次)

vim initreplica.js

//添加以下内容(ip地址根据自己真实情况填写, priority是权重值,值最大默认为启动时主节点)

```

var cfg = { _id: ‘rs1‘,
     members: [
         { _id: 0, host:‘192.168.200.244:27017‘, priority: 100},
         { _id: 1, host:‘192.168.200.242:27017‘, priority: 50},
         { _id: 2, host:‘192.168.200.243:27017‘, arbiterOnly: true}
     ]
};

var error = rs.initiate(cfg);
printjson(error);

```

//保存 文件

//执行生效指令

mongo 127.0.0.1:27017/admin initreplica.js

//执行结果如下

MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017/admin
MongoDB server version: 4.0.2
{
     "ok" : 1,
     "operationTime" : Timestamp(1536314326, 1),
     "$clusterTime" : {
         "clusterTime" : Timestamp(1536314326, 1),
         "signature" : {
             "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
             "keyId" : NumberLong(0)
         }
     }
}

5.构建账号供应用程序连接群集鉴权(本例只添加最高权限账号root)

db.createUser(
    {
      user: "root",
      pwd: "password",
     
      roles: [{"role":"root","db":"admin"}],

    }
)

6.以鉴权方式启动群集(三台机相同启动方式)

mongod -f config.conf –auth

//启动完成如下显示并程序常驻

2018-09-08T11:06:59.452+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols ‘none‘

//此时想查看当前数据库启动情况可以执行如下指令

vim log/mongod.log

7.数据库工具连接到集群

mongodb://root:[email protected]:27017,192.168.200.242:27017,192.168.200.243:27017/?readPreference=primaryPreferred&replicaSet=rs1&authSource=admin

8.工具推荐使用nosqlbooster,有免费版,试用期间功能一切可用,试用结束不能导入导出数据和没有智能提示功能。但会一直可用,下载地址:https://nosqlbooster.com


























































以上是关于Mongodb4.0副本集构建的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7.4搭建基于用户认证的MongoDB4.0三节点副本集集群

mongodb4.0分片集群安装

Mongodb副本集和分片

mongodb4.0.2 复制集主从部署

markdown mongoDB构建Percona副本集

即时创建我的程序集的签名副本