MongoDB配置副本集(含Arbiter)

集群模式为:一主一副一仲裁

安装依赖

yum install net-snmp lsof -yyum install net-snmp -y

配置数据节点

在每一台要配置数据节点的机器上均要操作,这里配置两台机器

创建存放进程ID(PID)的文件夹

mkdir -p /var/run/mongodb/

创建存储节点数据和log文件的文件夹

mkdir -p /mongodb/node/datamkdir -p /mongodb/node/log

编辑数据节点的配置文件

vim /etc/mongod_Node.conf
systemLog:destination: filelogAppend: truepath: /mongodb/node/log/node.logstorage:dbPath: /mongodb/node/datajournal:enabled: trueprocessManagement:fork: truepidFilePath: /var/run/mongodb/node.pidtimeZoneInfo: /usr/share/zoneinfonet:port: 27019bindIp: 0.0.0.0replication:replSetName: repl_0sharding:clusterRole: shardsvr

使用配置文件启动数据节点

/mongodb/mongodb-linux-x86_64-enterprise-rhel70-4.4.5/bin/mongod -f /etc/mongod_Node.conf

配置防火墙

#开启端口
firewall-cmd --zone=public --add-port=27019/tcp --permanent
#重新载入
firewall-cmd --reload
#查看
firewall-cmd --query-port=27019/tcp

创建仲裁节点

在每一台要配置Arviter的机器上均要操作,此处配置一台

Arbiter存储的不是应用程序的数据,而是副本集的配置数据

创建存放进程ID(PID)的文件夹

mkdir -p /var/run/mongodb/

创建存储Arbiter数据和log文件的文件夹

mkdir -p /mongodb/arbiter/datamkdir -p /mongodb/arbiter/log

编辑Arbiter的配置文件

vim /etc/mongod_Arbiter.conf
systemLog:destination: filelogAppend: truepath: /mongodb/arbiter/log/arbiter.logstorage:dbPath: /mongodb/arbiter/datajournal:enabled: trueprocessManagement:fork: truepidFilePath: /var/run/mongodb/arbiter.pidtimeZoneInfo: /usr/share/zoneinfonet:port: 27020bindIp: 0.0.0.0replication:replSetName: repl_0sharding:clusterRole: shardsvr

使用配置文件启动仲裁节点

/mongodb/mongodb-linux-x86_64-enterprise-rhel70-4.4.5/bin/mongod -f /etc/mongod_Arbiter.conf

配置防火墙

#开启端口
firewall-cmd --zone=public --add-port=27020/tcp --permanent
#重新载入
firewall-cmd --reload
#查看
firewall-cmd --query-port=27020/tcp

登录其中一台数据节点

通常选择初始时欲成为Primary的节点

/mongodb/mongodb-linux-x86_64-enterprise-rhel70-4.4.5/bin/mongo --port 27019

在登录节点后设定副本集成员

use adminrs.initiate({_id:"repl_0",members:[{_id:0,host:"node1:27019"},{_id:1,host:"node2:27019"},{_id:2,host:"node3:27020",arbiterOnly:true}
]})# 如果全部是node节点,使用以下配置
rs.initiate({_id:"repl_0",members:[{_id:0,host:"node1:27019"},{_id:1,host:"node2:27019"},{_id:2,host:"node3:27019"}
]})
rs.conf()rs.status()

配置内存节点

In-Memory节点的数据会完全放置在内存中,仅有少量的元数据及诊断(Diagnostic)日志会存放在磁盘中。在读取数据时不会涉及磁盘I/O操作。

缺点:一旦服务关闭,数据就会丢失(包含权限信息)

将内存节点设置为主/副节点的优势

设置为主节点

若将In-memory节点设定成主节点,则可以怎家读写的效率。

但若在数据写入后还在同步到副本节点就发生宕机,则可能导致数据丢失。

设定为副节点

若将In-memory设置为副本节点,则In-Memory节点重启后可以从其他节点上同步数据,以避免数据丢失所造成的损失。

如将In-Memory设为副本节点,则可通过"读写分离"来提高读写性能。

In-Memory节点的配置方式

配置In-Memory节点的方式,与配置一般节点的方式仅有少量差异

配置时可以设置”内存使用空间“的大小,默认大小为”50%的物理内存-1GB“;

而dbpath的路径仅会保存一些诊断数据及元数据

建立保存诊断(Diagnostic)数据及元数据的文件夹

madir -p /mongodb/in-memoryNode

设置启动文件中storage的属性值

storage:
engine: inMemorydbPath: /mongodb/in-memoryNodeinMemory:engineConfig:inMemorySizeGB: 16000
  • 使用配置文件启动此节点
  • 使用副本集设定方式加入副本节点

正常关机

如果电脑需要关机,一定要先正常关闭mongodb,否则容易出现集群启动不了的问题

/mongodb/mongodb-linux-x86_64-enterprise-rhel70-4.4.5/bin/mongo --port 27019use admindb.shutdownServer()
lsof -i:27019kill pid

配置自启动服务

关闭SELinux

# 检查SELinux是否开启
/usr/sbin/sestatus -v
vim /etc/selinux/config
SELINUX=disabled

重启机器

reboot

编辑自启动服务文件

编辑MongoDB服务文件(mongod.service)

vim /usr/lib/systemd/system/mongod.service
  • 数据节点
[Unit]
Description=mongodb
After=network.target[Service]
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStart=/mongodb/mongodb-linux-x86_64-enterprise-rhel70-4.4.5/bin/mongod --config /etc/mongod_Node.conf
ExecStop=/mongodb/mongodb-linux-x86_64-enterprise-rhel70-4.4.5/bin/mongod --shutdown --config /etc/mongod_Node.conf
PIDFile=/var/run/mongodb/node.pid
PermissionsStartOnly=true
Type=forking  # file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false[Install]
WantedBy=multi-user.target
  • 仲裁节点
[Unit]
Description=mongodb
After=network.target[Service]
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStart=/mongodb/mongodb-linux-x86_64-enterprise-rhel70-4.4.5/bin/mongod --config /etc/mongod_Arbiter.conf
ExecStop=/mongodb/mongodb-linux-x86_64-enterprise-rhel70-4.4.5/bin/mongod --shutdown --config /etc/mongod_Arbiter.conf
PIDFile=/var/run/mongodb/arbiter.pid
PermissionsStartOnly=true
Type=forking  # file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false[Install]
WantedBy=multi-user.target

设置mongod.service权限

chmod 754 /usr/lib/systemd/system/mongod.service

启动自启动服务

systemctl enable mongod.service

开启服务

systemctl start mongod.service

关闭自启动服务

systemctl disable mongod.service

查询服务状态

systemctl status mongod.service

停止服务

systemctl stop mongod.service

MongoDB配置副本集(含Arbiter)相关推荐

  1. MongoDB配置副本集

    前提 3台节点都安装好mongo 集群: 1台primary 1台secondary 1台ARBITER(做监控的,实际没有数据) 配置步骤 生成keyFile,主节点操作 openssl rand ...

  2. MongoDB之副本集配置

    MongoDB主从复制 主从复制是 MongoDB 最早使用的复制方式, 该复制方式易于配置,并且可以支持任意数量的从节点服务器,与使用单节点模式相比有如下优点: 在从服务器上存储数据副本,提高了数据 ...

  3. MongoDB之副本集

    MongoDB之副本集 一.简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...

  4. MongoDB之副本集创建

    目录 一 复制 1 复制简介 2 建立副本集 3 网络注意事项 4 安全注意事项 5 观察副本集 6 更改副本集操作 7 如何设计副本集 8 如何进行选举 9 成员变量配置 10 创建索引 二 同步 ...

  5. Golang + MongoDB ReplSet副本集

    本文介绍MongoDB副本集,暂且按照3个节点来配置:A(primary).B(secondary).C(arbiter) 1. 在集群每个节点上安装一份MongoDB: 2. 配置副本集: 3. 配 ...

  6. MongoDB分片副本集搭建

    1.安装mongodb tar xvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz -C /usr/local/ cd /usr/local mv ...

  7. SpringBoot整合MongoDB以及副本集、分片集群的搭建

    整合springboot应用 说明: 这里主要以 springboot 应用为基础应用进行整合开发. Spring Data : Spring 数据框架 JPA .Redis.Elasticsearc ...

  8. MongoDB 搭建副本集

    副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的更新由Primary ...

  9. MongoDB的副本集

    文章目录 1.副本集-Replica Sets 2.副本集的三个角色 3.副本集架构目标 4.故障测试 1.副本集-Replica Sets MongoDB中的副本集(Replica Set)是一组维 ...

最新文章

  1. java cxf 入口统一_分分钟带你玩转 Web Services【2】CXF
  2. win2003系统网络安装——基于linux+pxe+dhcp+tftp+samba+ris
  3. ubuntu更新时区和时间
  4. 苹果APPLE最新MI芯片笔记本安装第三方内核扩展
  5. SQL数据库面试题以及答案!
  6. OPENSTACK重装系统失败导致虚拟机状态为error
  7. AndroidManifest.xml中的android:name是否带.的区别
  8. stringbuffer用法 java_StringBuffer的用法
  9. linux 内核头文件、内核库文件
  10. 【设计模式】05模板方法模式学习笔记
  11. 5W1H、5W2H 分析法
  12. 数据库、模式、表的关系(转载)
  13. 我的世界服务器扔东西显示垃圾箱,我的世界:MC里6个隐藏的垃圾桶,第一个可回收,第二个很常见?...
  14. 完全用Linux工作
  15. iOS常用的功能(打电话、发短信、发邮件等)
  16. vscode配置python环境以及使用json文件配置默认解释器、代码自动保存、pydesigner、kite
  17. 怎么样matlab做玫瑰花,Matlab画的玫瑰花
  18. 自己动手编译最新Android源码及SDK(Ubuntu)
  19. Eplan-中断点(3)
  20. 登录Linux操作系统并执行第一个C语言代码

热门文章

  1. mysql高可用集群MHA,PXC
  2. 如何实现短信的发送,配置-----容联云(测试)
  3. Scrapy爬取中国地震台网1年内地震数据
  4. 【ROM定制】官改教程:super.img解打包!
  5. Unity 3D 脚本参考
  6. 第三章 模糊查询与分组查询 ② 代码
  7. 幕布,为知笔记和Effie哪个更适合采编呢?
  8. 关于计算机科学技术的作文,关于描写计算机的作文
  9. 电销行业竞争与日俱增,西安外呼系统如何改善?
  10. 学籍管理系统c语言,c语言学籍信息管理系统设计