目前最新的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. shell---命令解析器---简单操作快捷键

    命令解析器---解析输入命令并执行操作 命令或目录补齐快捷键:TAB键 遍历史 输入: 小键盘:上 或 CTRL+P 小键盘:下 或 CTRL+N 光标移动: 小键盘:左 或 CTRL+B 小键盘:右 ...

  2. gzy的摄影梦

    好像当身高180的摄影师啊. 记录一下素材,等自己有相机了,就一一实现. 竟然有人在看哎. 一袭红衣的女子,将手伸出窗外,开心的看这漫天大雪. 今天的晚霞,近处是蓝色,颜色逐渐变淡,一直延伸到远处.( ...

  3. ES6-Babel-Browserify使用教程

    ES6-Babel-Browserify使用教程 定义package.json文件 { "name" : "es6-babel-browserify", &qu ...

  4. [源码分析]读写锁ReentrantReadWriteLock

    一.简介 读写锁. 读锁之间是共享的. 写锁是独占的. 首先声明一点: 我在分析源码的时候, 把jdk源码复制出来进行中文的注释, 有时还进行编译调试什么的, 为了避免和jdk原生的类混淆, 我在类前 ...

  5. kubernetes包管理工具Helm安装

    helm官方建议使用tls,首先生成证书. openssl genrsa -out ca.key.pem openssl req -key ca.key.pem -new -x509 -days -s ...

  6. VS Less Compiler插件使用

    1.打开扩展管理器,下载安装 2.新建一个test.less文件 3.敲入代码 @grayback: #808080; body { background:@grayback; } 4.保存即可自动生 ...

  7. maven相关配置

    复习了下maven的常用配置及相关解释,直接看的前辈们的博客, maven核心,pom.xml详解(转)

  8. IE8 环境的 JQuery 中的 $.ajax 拒绝访问---解决方案

    需求是兼容到 IE8. $.ajax 总是请求失败,直接跳转到 error 函数中,报错:拒绝访问. 网上的一些解决方法都试过了还是没有用,比如再请求之前设置 jQuery.support.cors ...

  9. [工具开发] 分享两个基于Heapster 和 Influxdb 的 Grafana 监控仪表盘模板

    Info Collector: Heapster - /heapster- --metric-resolution=30s- --sink=influxdb:http://influxdb.defau ...

  10. Light OJ 1266 - Points in Rectangle

    题目 Link 就是查询矩形内有多少个点. 分析 二维树状数组维护就好了,. Code #include <bits/stdc++.h> const int maxn = 1000 + 1 ...