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

原文地址:https://www.cnblogs.com/jacle169/p/9608776.html

时间: 2024-11-09 10:01:33

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

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

最近公司对项目安全方面的问题很是重视,进行了多次各种安全漏洞的扫描,于是乎就扫到了mongodb弱口令的问题. 在项目部署初期,因为大家对这个都不是特别重视,大概是因为觉得反正是内网项目吧,所以mongodb数据库的用户名和密码就都是admin. 这次扫到弱口令之后,要求解决这个问题,于是任务便分到了我的头上. 遵循强口令的标准,我把admin改成了由大写字母.小写字母.数字和特殊字符共同组成的密码,但是在更改的过程中却并不像想象的那么顺利,其中遇到的问题我称之为mongodb副本集密码的一些坑

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

之前有搭建mongodb3.0的副本集,不过当时直接使用的admin数据库,用户也是直接给的root. 链接:http://blog.csdn.net/tuzongxun/article/details/51723259 最近想要把数据移到非admin数据库上,便重新以非admin库创建用户,过程大致和之前的一样,但创建用户的时候还是遇到了一些问题,主要是在用户角色和权限上. 我搭建过程中参考了下边的用户权限相关的博客: http://blog.csdn.net/tuzongxun/articl

MongoDB 3.0副本集搭建

环境配置 MongoDB安装 下载yum源配置 wget https://repo.mongodb.org/yum/redhat/mongodb-org-3.0.repo  mv mongodb-org-3.0.repo  /etc/yum.repos.d/ 安装mongodb yum -y install mongodb-org 修改mongodb配置文件 # 修改监听地址为0.0.0.0 net:   port: 27017   bindIp: 0.0.0.0 # 修改副本集配置 repli

Docker搭建MongoDB 4.0副本集

环境: 系统版本:CentOS 7.5 内核:4.18.7-1.el7.elrepo.x86_64 Docker-ce: 18.06 MongoDB: 4.0.3 宿主机IP:192.168.1.1 MongoDB1端口:30001 MongoDB2端口:30002 MongoDB3端口:30003 一.安装docker.docker-compose wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker

mongo副本集原理,搭建

#进入mongo mongo   默认端口27017启动的mongo服务,直接进入 mongo --port=27027   指定端口27027启动mongo服务,需加端口号启动 mongo 103.56.195.5:27017   登录指定主机的mongo服务,可以以此测试对端防火墙是否放通,mongo服务器端口 #mongo副本集启动参数: [[email protected] db]# ps aux |grep mongo root     112542  0.7  0.1 1058417

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

mongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模式,点击 ,如图: 那什么是副本集呢?打魔兽世界总说打副本,其实这两个概念差不多一个意思.游戏里的副本是指玩家集中在高峰时间去一个场景打怪,会出现玩家暴多怪物少的情况,游戏开发商为了保证玩家的体验度,就为每一批玩家单独开放一个同样的空间同样的数量的怪物,这一个复制的场景就是一个副本,不管有多少个玩家各自在各自的副本里玩不会互相影响. mongoDB的副本也是这个,主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性.而副本

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

部署开始: 创建路径 D:\Program Files\MongoDB\MySet下 config Data log 文件夹 config文件夹下准备配置文件: 分片1的副本集1 storage: dbPath: D:/Program Files/MongoDB/MySet/Data/shard11 journal: enabled: true systemLog: destination: file logAppend: true path: D:/Program Files/MongoDB/

Mongodb的入门(8)mongodb4副本集

介绍: mongo4云19年2月16开发公布,至今已经半年,前段时间一直在用mongo3系列,4X系列新增很多新特性,下面我来简单介绍一下,先从副本集开始 副本集: 主节点宕机时从节点会自动切换成主节点. mongo4后不再提供主从复制机制 搭建副本集步骤: 第一步:安装mongo   参考:Mongodb的入门(7)window安装mongodb4 cmd >  mongo 默认安装成功了(mongo4的安装比3.x简单,我安装博客有部分图没截图,大家有需要的可以百度一下mongo4的安装)

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

这是去年写的一篇文档,最近突然发现并没有发不出来,因此现在补上,希望能对某些朋友有所帮助.因为当时记录时没有截图,因此这里看起来可能就比较单调. 一.基本环境: mongdb3.0.5数据库 spring-data-mongodb-1.7.2.jar mongo-java-driver-3.0.2.jar linux-redhat6.3 tomcat7 二.搭建mongodb副本集: 1.  分别在三台linux系统机上安装mongodb,(为避免和机器上原有的mongodb端口冲突,这里设为5