数据的目录文件层次设计

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

主要基于以下考虑:

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. [Swift]LeetCode440. 字典序的第K小数字 | K-th Smallest in Lexicographical Order

    Given integers n and k, find the lexicographically k-th smallest integer in the range from 1 to n. N ...

  2. [SQL]LeetCode596. 超过5名学生的课 | Classes More Than 5 Students

    SQL架构 Create table If Not Exists courses (student varchar(), )) Truncate table courses insert into c ...

  3. PHP实现登录注册

    一.首先实现一个PHP的简单登录注册的话 我们要简单的与后端定义一下接口和传输数据的方式 并且我们要有一个phpStudy服务器. 第一步:当我们点击注册按钮的时候数据库要接收到客户端请求的数据  第 ...

  4. Android Studio 获取数字签名

    下面介绍下调试版本和发布版本,获取数字签名的方法,通过以下方法可以获取到SHA1和MD5 1.调试版本 在调试模式下,Android studio会默认生成一个debug.keystore签名文件,因 ...

  5. 从零打卡leetcode之day 4--无重复最长字符串

    题目描述: 给定一个字符串,找出不含有重复字符的最长子串的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. ...

  6. 如何把你的.net程序打包上传到nuget

    写在前面 每个.net开发者都经常用nuget管理自己的程序包,install一个json组件啊,一个工具类什么的,这些都是别人写好的.如果我也写好了一个自己感觉很拿的出手的组件,想轻松的使用nuge ...

  7. Spring拓展接口之FactoryBean,我们来看看其源码实现

    前言 开心一刻 那年去相亲,地点在饭店里,威特先上了两杯水,男方绅士的喝了一口,咧嘴咋舌轻放桌面,手抚额头闭眼一脸陶醉,白水硬是喝出了82年拉菲的感觉.如此有生活情调的幽默男人,果断拿下,相处后却发现 ...

  8. Mac homebrew-1.5以后安装php扩展的方法

    一.以前Mac安装php及php扩展的方式 用Mac的童鞋都知道,我们以前都是用brew install php70,brew install php71 这样来安装php的,用brew instal ...

  9. js中如何在不影响既有事件监听的前提下新增监听器

    一. 需求澄清 比如某个按钮已经绑定了2-3个对Window对象的load事件的监听,现在需要添加一个新的对click事件的监听器,但在一定条件下才会同时触发原有的2-3个load监听器,否则只触发新 ...

  10. JDK源码分析(四)—— ConcurrentHashMap

    一.概述 ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable. 锁分段技术 原理:将数据分成一段一段的存储,然后给每一段数据配一把锁,当一 ...