数据的目录文件层次设计

我们一般采用多实例的方式,而不是将所有的数据库尽可能地放在一个实例中。

主要基于以下考虑:

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版本的副本集为例)的更多相关文章

  1. EOS主网搭建教程--&&--搭建节点--&&--搭建mongodb数据库

    EOS主网搭建教程: 1.git clone https://github.com/EOS-Mainnet/eos.git --recursive 2.cd eos 3.git tag (查看有哪些分 ...

  2. MongoDBV3.0.7版本(shard+replica)集群的搭建及验证

    集群的模块介绍: 从MongoDB官方给的集群架构了解,整个集群主要有4个模块:Config Server.mongs. shard.replica set: Config Server:用来存放集群 ...

  3. MongoDB 学习笔记(七):主从复制与副本集

    一.主从复制 1.主从复制是一个简单的数据库同步备份的集群技术,如下图:要明确的知道主服务器与从服务器,且从服务器要明确的知道主服务器的存在. 2.在MongoDB中在启动数据库服务时,可以用mast ...

  4. mongodb 3.4 集群搭建:分片+副本集

    mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...

  5. mongodb 3.6 集群搭建:分片+副本集

    mongodb是最常用的nosql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...

  6. 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 ...

  7. 搭建MongoDB分片集群

    在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...

  8. 搭建 MongoDB分片(sharding) / 分区 / 集群环境

    1. 安装 MongoDB 三台机器 关闭防火墙 systemctl stop firewalld.service 192.168.252.121 192.168.252.122 192.168.25 ...

  9. linux下Mongodb集群搭建:分片+副本集

    三台服务器 192.168.1.40/41/42 安装包 mongodb-linux-x86_64-amazon2-4.0.1.tgz 服务规划  服务器40  服务器41  服务器42  mongo ...

随机推荐

  1. shell 删除重复文件脚本

    摘自 <Linux Shell脚本攻略>一书,例子在109页,原理在110页,原理讲解的很好哦! 需要了解awk命令.xargs,脚本中所用的命令在Linux Shell脚本攻略一书中都有 ...

  2. Java语言的简单基础

    1.Java 是一种高级程序设计语言. 2.Java 是大小敏感的程序语言. 3.Java 中的 public 修饰的类名一般要与文件名相同,但也有特列:内部类. 4.Java 程序能在任何操作系统中 ...

  3. python中的pip

    python中的pip python有两个著名的包管理工具,其中,pip是一个.它对python的包进行管理和升级等操作. 问题一:pip本地的模块安装在哪里? 使用pip install numpy ...

  4. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  5. redis 系列20 服务器下

    二. serverCron函数 2.3 更新服务器每秒执行命令次数 serverCron函数中的trackOperationsPerSecond函数会以每100毫秒一次的频率执行,这个函数以抽样计算的 ...

  6. 使用Phalcon框架开发一个简易的博客系统

    使用Phalcon PHP框架开发一个简易的博客系统(类似于CMS) 最近在做Phalcon(Phalcon在英文中指的是鸟类中飞得最快的那一个物种,由于是高性能框架,借用了这个词)相关的项目,由于刚 ...

  7. 使用SDL2显示一张图片,SDL2上手贴

    SDL全名Simple DirectMedia Layer,是一个跨平台的底层音频.视频.键盘.鼠标操作库,操作实际通过更底层的OpenGL/Direct3D完成,在保留跨平台的兼容性之外提供了非常高 ...

  8. 探讨.net Socket支持在线连接数量

    发现不少同学在用.NET做通讯的时候都关心一个问题,.NET能支持多少个在线连接.其实.net的通讯由winsocket所支持,既然由低层的winsocket所支持那.NET其端的接入连接数的受限完全 ...

  9. Python包的导入说明

    import 模块 from 包 import 模块 上面的代码有什么区别呢? from 模块 import * 这种导入想象与把模块里面的代码都复制到当前模块中(也就是该语句所在位置),这时候你可以 ...

  10. 大战Java虚拟机【1】—— 内存

    前言 要了解Java虚拟机首先要知道的基础就是内存.虚拟机存在的意义就是对内存进行管理,因为不用人为的去管理每个对象的内存,所以才让java使用起来那么方便,不用像c.c++那样去free. 运行时数 ...