目前最新的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. axios设置请求拦截和响应拦截

    首先我们先创建axios实例 const service = axios.create({ baseURL: url, //是用于请求的服务器 URL timeout: 5000, // 请求超时时间 ...

  2. <div>标签仿<textarea>。contentEditable=‘true’,赋予非表单标签内容可以编辑

    需求:web页面需要一个文本输入框.1.该文本输入框默认状态下有个仿‘placeholder’的默认文本提示信息,2.文本框输入状态下其高度会随文本内容自动撑开. 方案选择:1.使用<texta ...

  3. Java基础 -- 持有对象(容器)

    一 容器的用途 如果对象的数量与生命周期都是固定的,自然我们也就不需要很复杂的数据结构. 我们可以通过创建引用来持有对象,如 Class clazz; 也可以通过数组来持有多个对象,如 Class[] ...

  4. CMakeList.txt(3): 一个cmake实例

    介绍一个比较实用的例子,即包含生成静态库又包含引入外部头文件和链接库的cmake demo. 先按照工程规范建立工程目录,并编写代码,以下面的工程目录为例进行解释这个例子,工程的目录结构为: 1. 编 ...

  5. js实现点气球小游戏

    二话不说直接贴代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  6. I2C(一)框架

    目录 I2C(一)框架 引入 整体框架 数据结构 文件结构 流程简述 参考文档 title: I2C(一)框架 date: 2019/1/28 17:58:42 toc: true --- I2C(一 ...

  7. Qt快速入门第三版下载

    找了半天才找到一个靠谱的: http://www.ddooo.com/softdown/111665.htm

  8. DOS:第一天

    cd,有时也写作chdir(change directory,改变目录),是在Unix.Windows和DOS操作系统下用于改变工作目录的命令行命令.在Unix的外壳脚本与Windows或DOS的批处 ...

  9. Luogu CF451E Devu and Flowers 题解报告

    题目传送门 [题目大意] 有n种颜色的花,第i种颜色的花有a[i]朵,从这些花中选m朵出来,问有多少种方案?答案对109+7取模 [思路分析] 这是一个多重集的组合数问题,答案就是:$$C_{n+m- ...

  10. vagrant极简教程:快速搭建centos7

    作为开发人员,只要你的应用最终是放在linux环境执行,那么最好就是将本地开发环境也线上一致.不管是用windows系统,还是mac系统,即使你本地程序跑得好好的,也经常会出现一上线就各种bug的现象 ...