目前最新的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.x mongodb-org-server=4.0.x mongodb-org-shell=4.0.x mongodb-org-mongos=4.0.x mongodb-org-tools=4.0.x

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.构建账号供应用程序连接群集鉴权(本例只添加最高权限账号root) 尽量在此步连接单实例先创建账号

//在主服务器连接本机mongodb实例

mongo 127.0.0.1:27017/admin

//创建root账号

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

    }
)

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

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)
         }
     }
}

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:password@192.168.200.244:27017,192.168.200.242:27017,192.168.200.243:27017/?readPreference=primaryPreferred&replicaSet=rs1&authSource=admin

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

Mongodb4.0副本集构建的更多相关文章

  1. MongoDB4.2 副本集扫盲说明

    说明: 在扫盲MongoDB相关的一些知识的时候,顺手做下笔记.本文将说明副本集相关的内容.在比较早之前已经对这些有过说明,可以看MongoDB 副本集的原理.搭建.应用.MongoDB中的副本集是一 ...

  2. 修改mongodb3.0副本集用户密码遇到的坑

    最近公司对项目安全方面的问题很是重视,进行了多次各种安全漏洞的扫描,于是乎就扫到了mongodb弱口令的问题. 在项目部署初期,因为大家对这个都不是特别重视,大概是因为觉得反正是内网项目吧,所以mon ...

  3. mongodb3.0副本集搭建补充~~非admin数据库的用户权限

    之前有搭建mongodb3.0的副本集,不过当时直接使用的admin数据库,用户也是直接给的root. 链接:http://blog.csdn.net/tuzongxun/article/detail ...

  4. mongodb 4.0副本集搭建

    近期有同学问mongodb副本集难不难部署,我的回答是不难,很快,几分钟搞定,比mysql MHA简单的不止一点半点. 那么到底如何部署呢?请看下文. 1.  准备工作 1.1 下载软件 选择版本并下 ...

  5. mongodb副本集搭建

    1.创建目录 mkdir -p /data/r1  /data/r2  /data/r3 2.启动: bin/mongod --config ../mongod.conf --replSet r1 b ...

  6. MongoDB4.0 WINDOWS环境下 副本集、分片部署

    部署开始: 创建路径 D:\Program Files\MongoDB\MySet下 config Data log 文件夹 config文件夹下准备配置文件: 分片1的副本集1 storage: d ...

  7. Mongodb3.0.6副本集+分片学习笔记

    一.使用问题记录 1. mongodb3.0.6使用mongostat参数 >./mongostat -h 127.0.0.1:27017 -u root -p 123456 /authenti ...

  8. Mongodb3.0.5副本集搭建及spring和java连接副本集配置

    这是去年写的一篇文档,最近突然发现并没有发不出来,因此现在补上,希望能对某些朋友有所帮助.因为当时记录时没有截图,因此这里看起来可能就比较单调. 一.基本环境: mongdb3.0.5数据库 spri ...

  9. 清清楚楚地搭建MongoDB数据库(以搭建4.0.4版本的副本集为例)

    数据的目录文件层次设计 我们一般采用多实例的方式,而不是将所有的数据库尽可能地放在一个实例中. 主要基于以下考虑: 1:不同业务线对应的数据库放在不同的实例上,部分操作的运维时间容易协调等到. 2:相 ...

随机推荐

  1. 函数内部还是不要使用 strtok()

    今天在调试程序的时候,遇到一个奇怪的事情,一开始担心是代码存在内存溢出引起的,花了半个小时没找到原因. 在吃饭的时候,突然想起可能是 strtok() 引起的,查找调用的函数,果然发现在函数中使用了  ...

  2. PHP RSA加解密详解(附代码)

    前言:RSA加密一般用在涉及到重要数据时所使用的加密算法,比如用户的账户密码传输,订单的相关数据传输等. 加密方式说明:公钥加密,私钥解密.也可以  私钥加密,公钥解密 一.RSA简介 RSA公钥加密 ...

  3. JSP中EL很常用,怎样使用大于号、小于号、等于号等

    JSP中EL很常用,怎样使用大于号.小于号.等于号等   符号 在EL中使用 常规 1 等于 eq == 2 不等于 ne != 3 大于 gt > 4 小于 lt < 5 大于等于 ge ...

  4. 如何在Linux中使用命令行卸载软件

    您可以使用“dpkg”命令来查看您的计算机,按“Ctrl + Alt + T”的所有已安装包的列表,打开一个终端窗口. 在提示符下键入以下命令,然后按Enter键.dpkg -- list 要卸载程序 ...

  5. palacehoder的自定义样式【输入框input /文本域textarea】

    7.palacehoder的自定义样式[输入框input /文本域textarea] 因为每个浏览器的CSS选择器都有所差异,所以需要针对每个浏览器做单独的设定(可以在冒号前面写input和texta ...

  6. unet 网络接受任意大小的输入

    将网络的输入定义的placeholder 大小设为:[None,None,c], 不设置固定的大小. 但是出现问题: 前层特征图与后层特征图进行组合时,尺寸大小不一致: [32, 60, 256] 和 ...

  7. Debian Security Advisory DSA-4421-1 chromium security update

    Debian Security Advisory DSA-4421-1 chromium security update Package        : chromiumCVE ID         ...

  8. 命名空间的using声明

    using声明具有如下的形式: using namespace::name; 一旦声明了上述语句,就可以直接访问命名空间中的名字: #include<iostream> //using声明 ...

  9. P5300 [GXOI/GZOI2019]与或和

    题目地址:P5300 [GXOI/GZOI2019]与或和 考虑按位计算贡献 对于 AND 运算,只有全 \(1\) 子矩阵才会有贡献 对于 OR 运算,所以非全 \(0\) 子矩阵均有贡献 如果求一 ...

  10. JAVA学习笔记(4)—— 排序算法

    排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ...