清清楚楚地搭建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]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 ...
- [SQL]LeetCode596. 超过5名学生的课 | Classes More Than 5 Students
SQL架构 Create table If Not Exists courses (student varchar(), )) Truncate table courses insert into c ...
- PHP实现登录注册
一.首先实现一个PHP的简单登录注册的话 我们要简单的与后端定义一下接口和传输数据的方式 并且我们要有一个phpStudy服务器. 第一步:当我们点击注册按钮的时候数据库要接收到客户端请求的数据 第 ...
- Android Studio 获取数字签名
下面介绍下调试版本和发布版本,获取数字签名的方法,通过以下方法可以获取到SHA1和MD5 1.调试版本 在调试模式下,Android studio会默认生成一个debug.keystore签名文件,因 ...
- 从零打卡leetcode之day 4--无重复最长字符串
题目描述: 给定一个字符串,找出不含有重复字符的最长子串的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. ...
- 如何把你的.net程序打包上传到nuget
写在前面 每个.net开发者都经常用nuget管理自己的程序包,install一个json组件啊,一个工具类什么的,这些都是别人写好的.如果我也写好了一个自己感觉很拿的出手的组件,想轻松的使用nuge ...
- Spring拓展接口之FactoryBean,我们来看看其源码实现
前言 开心一刻 那年去相亲,地点在饭店里,威特先上了两杯水,男方绅士的喝了一口,咧嘴咋舌轻放桌面,手抚额头闭眼一脸陶醉,白水硬是喝出了82年拉菲的感觉.如此有生活情调的幽默男人,果断拿下,相处后却发现 ...
- Mac homebrew-1.5以后安装php扩展的方法
一.以前Mac安装php及php扩展的方式 用Mac的童鞋都知道,我们以前都是用brew install php70,brew install php71 这样来安装php的,用brew instal ...
- js中如何在不影响既有事件监听的前提下新增监听器
一. 需求澄清 比如某个按钮已经绑定了2-3个对Window对象的load事件的监听,现在需要添加一个新的对click事件的监听器,但在一定条件下才会同时触发原有的2-3个load监听器,否则只触发新 ...
- JDK源码分析(四)—— ConcurrentHashMap
一.概述 ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable. 锁分段技术 原理:将数据分成一段一段的存储,然后给每一段数据配一把锁,当一 ...