清清楚楚地搭建MongoDB数据库(以搭建4.0.4版本的副本集为例)
数据的目录文件层次设计

我们一般采用多实例的方式,而不是将所有的数据库尽可能地放在一个实例中。
主要基于以下考虑:
1:不同业务线对应的数据库放在不同的实例上,部分操作的运维时间容易协调等到。
2:相互独立,减少相互干扰。不会因为某个业务的激增或某个开发Team的代码问题,拖累太多的数据库。
3:实例资源容易控制,例如内存等。
从上图可以知道,mongo二进制文件是多个实例公用的。一个版本一个目录,从图可以看出,这个服务器上支持两个版本的MongoDB,一个是版本3.4.4,一个是比较新的4.0.4。三级目录上的实例文档,我们一般是根据用途命名。比如,要安装一台存储weixin信息的MongoDB,使用的版本是4.0.4,那么它的目录层次是这样的。

安装配置步骤
下面以安装mongodbtest实例为例,逐步实现。此案例演示到创建副本集结束。
要搭建的副本集名称为 repltest,节点信息如下:
| Item | ServerIP | Port |
| Primary | 171.217.177.125 | 27288 |
| Secondary | 171.217.177.182 | 27288 |
| Arbiter | 171.217.177.134 | 27288 |
step 1 创建mongodb的配置文件,添加基本参数
创建文件:
touch mongodbtest.conf
添加启动参数:
port=27288
dbpath=/data/mongodb/mongodbtest/data/db
logpath=/data/mongodb/mongodbtest/logs/mongod.log
fork=true
bind_ip=127.0.0.1,171.217.177.125
maxConns=2500
wiredTigerCacheSizeGB=108
step 2 创建数据文件和日志文件
创建数据文件
mkdir -p /data/mongodb/mongodbtest/data/db
指定路径下创建日志文件
touch mongod.log
step 3为 Linux 系统添加mongodb专有账号(非必须,当然也可以以root账号启动;一次性,检查服务器上已添加,不需要执行了)
useradd mongouser
step 4 修改mongo数据文件的拥有者,(为mongouser增加权限)
chown -R mongodbuser:mongouser /data/mongodb/mongodbtest
chown -R mongodbuser:mongouser /data/mongodb/authkeyfile/mon-keyfile ###(一次性)
chown -R mongodbuser:mongouser /data/mongodb/mongobin404/bin/mongodbtest.conf
step 5 添加MongoDB服务配置文件,配置service服务的文件。
service 文件放置在/lib/systemd/system文件夹中
touch mongodbtest.service
添加参数
[Unit] Description=mongodbtest
After=network.target remote-fs.target nss-lookup.target
[Service]
User=mongouser
Group=mongouser
# (open files)
LimitNOFILE=64000
Type=forking
ExecStart=/data/mongodb/mongobin404/bin/mongod --config /data/mongodb/mongobin404/bin/mongodbtest.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/data/mongodb/mongobin404/bin/mongod --shutdown --config /data/mongodb/mongobin404/bin/mongodbtest.conf
PrivateTmp=true [Install]
WantedBy=multi-user.target
step 6 启动服务,添加服务自启动
启动
systemctl start mongodbtest.service
查看状态
systemctl status mongodbtest.service
设置服务为开机自启动
systemctl enable mongodbtest.service
step 7 添加认证启动前,配置root权限的账号(在admin数据中执行)
db.createUser({user:"roottest", pwd:"roottestrootok",roles:[{role:"root",db:"admin"}]})
step 8 修改启动文件mongodbtest.conf,追加登入验证参数,和副本集参数。
(安全认证机制KeyFile的设置在此不做详解了,大家可以goole或百度)
auth=true
replSet=repltest
oplogSize=1024
keyFile=/data/mongodb/authkeyfile/mon-keyfile
以上8步所有的操作,在副本集的所有节点上(Primary、Secondary、arbiter)都要操作一遍。
step 9 重启服务,配置副本集,请在Primary
---副本集初始化
rs.initiate( {_id : "repltest", members: [ { _id : 0, host : "171.217.177.125:27288" } ]})
----添加辅助节点
rs.add("171.217.177.182:27288")
----添加见证节点
rs.add("171.217.177.134:27288",true)
step 10 创建用户数据库及设置相关权限(要在指定的数据库test_messqq上执行)
配置读写账号
db.createUser({user:"test_messqq_dev", pwd:"test_messqq_devyaoqian",roles: [ { "role" : "readWrite", "db" : "test_messqq" }] })
配置只读账号
db.createUser({user:"test_messqq_dev_read", pwd:"test_messqq_dev_read",roles: [ { "role" : "read", "db" : "test_messqq" }] })
本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!
清清楚楚地搭建MongoDB数据库(以搭建4.0.4版本的副本集为例)的更多相关文章
- EOS主网搭建教程--&&--搭建节点--&&--搭建mongodb数据库
EOS主网搭建教程: 1.git clone https://github.com/EOS-Mainnet/eos.git --recursive 2.cd eos 3.git tag (查看有哪些分 ...
- MongoDBV3.0.7版本(shard+replica)集群的搭建及验证
集群的模块介绍: 从MongoDB官方给的集群架构了解,整个集群主要有4个模块:Config Server.mongs. shard.replica set: Config Server:用来存放集群 ...
- MongoDB 学习笔记(七):主从复制与副本集
一.主从复制 1.主从复制是一个简单的数据库同步备份的集群技术,如下图:要明确的知道主服务器与从服务器,且从服务器要明确的知道主服务器的存在. 2.在MongoDB中在启动数据库服务时,可以用mast ...
- mongodb 3.4 集群搭建:分片+副本集
mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- mongodb 3.6 集群搭建:分片+副本集
mongodb是最常用的nosql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- mongodb之 3.4.0 mongodb sharing 副本集群搭建
系统系统 centos6.5三台服务器:10.100.25.42/43/44安装包: mongodb-linux-x86_64-rhel62-3.4.0.tgz 服务器规划:mongos mongos ...
- 搭建MongoDB分片集群
在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...
- 搭建 MongoDB分片(sharding) / 分区 / 集群环境
1. 安装 MongoDB 三台机器 关闭防火墙 systemctl stop firewalld.service 192.168.252.121 192.168.252.122 192.168.25 ...
- linux下Mongodb集群搭建:分片+副本集
三台服务器 192.168.1.40/41/42 安装包 mongodb-linux-x86_64-amazon2-4.0.1.tgz 服务规划 服务器40 服务器41 服务器42 mongo ...
随机推荐
- [Swift]LeetCode781. 森林中的兔子 | Rabbits in Forest
In a forest, each rabbit has some color. Some subset of rabbits (possibly all of them) tell you how ...
- [Swift]LeetCode955. 删列造序 II | Delete Columns to Make Sorted II
We are given an array A of N lowercase letter strings, all of the same length. Now, we may choose an ...
- ubuntu(版本14.04)部署Core环境
遇到问题: 参照官方文档敲完命令之后 出现了提示的问题Unable to lpcate package... ,随后参照官方文档解决方案,又出现了如下问题: 提示找不到依赖的Runtime,在尝试过很 ...
- 什么是“闭包”(closure)为什么要用它?
什么是闭包: 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方 ...
- 【tiles】简单使用总结
一.简介 tiles是一种JSP布局框架,主要目的是为了将复杂的JSP页面作为一个页面的部分机能,然后组合成一个最终的页面,这种做法便于对各个页面机能的变更和维护,减少代码量,实现代码的重用. til ...
- 8.Django缓存和信号
缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将某个views的返回值保存至内存或者memcache中, ...
- 【netty】(1)---BIO NIO AIO演变
BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠的网络服务器和客户端程序.Netty简化了网络程序的开发,是很多框架和公司都在使用的技术. Net ...
- System.Data.Entity.Infrastructure.DbUpdateException
异常描述: 捕捉到 System.Data.Entity.Infrastructure.DbUpdateException HResult=-2146233087 Message=无法更新 E ...
- Android--调用系统照相机拍照与摄像
前言 在很多场景中,都需要用到摄像头去拍摄照片或视频,在照片或视频的基础之上进行处理.但是Android系统源码是开源的,很多设备厂商均可使用,并且定制比较混乱.一般而言,在需要用到摄像头拍照或摄像的 ...
- SpringBoot入门教程(八)配置logback日志
Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logback-c ...