MongoDB配置副本集(含Arbiter)
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)相关推荐
- MongoDB配置副本集
前提 3台节点都安装好mongo 集群: 1台primary 1台secondary 1台ARBITER(做监控的,实际没有数据) 配置步骤 生成keyFile,主节点操作 openssl rand ...
- MongoDB之副本集配置
MongoDB主从复制 主从复制是 MongoDB 最早使用的复制方式, 该复制方式易于配置,并且可以支持任意数量的从节点服务器,与使用单节点模式相比有如下优点: 在从服务器上存储数据副本,提高了数据 ...
- MongoDB之副本集
MongoDB之副本集 一.简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...
- MongoDB之副本集创建
目录 一 复制 1 复制简介 2 建立副本集 3 网络注意事项 4 安全注意事项 5 观察副本集 6 更改副本集操作 7 如何设计副本集 8 如何进行选举 9 成员变量配置 10 创建索引 二 同步 ...
- Golang + MongoDB ReplSet副本集
本文介绍MongoDB副本集,暂且按照3个节点来配置:A(primary).B(secondary).C(arbiter) 1. 在集群每个节点上安装一份MongoDB: 2. 配置副本集: 3. 配 ...
- MongoDB分片副本集搭建
1.安装mongodb tar xvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz -C /usr/local/ cd /usr/local mv ...
- SpringBoot整合MongoDB以及副本集、分片集群的搭建
整合springboot应用 说明: 这里主要以 springboot 应用为基础应用进行整合开发. Spring Data : Spring 数据框架 JPA .Redis.Elasticsearc ...
- MongoDB 搭建副本集
副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的更新由Primary ...
- MongoDB的副本集
文章目录 1.副本集-Replica Sets 2.副本集的三个角色 3.副本集架构目标 4.故障测试 1.副本集-Replica Sets MongoDB中的副本集(Replica Set)是一组维 ...
最新文章
- java cxf 入口统一_分分钟带你玩转 Web Services【2】CXF
- win2003系统网络安装——基于linux+pxe+dhcp+tftp+samba+ris
- ubuntu更新时区和时间
- 苹果APPLE最新MI芯片笔记本安装第三方内核扩展
- SQL数据库面试题以及答案!
- OPENSTACK重装系统失败导致虚拟机状态为error
- AndroidManifest.xml中的android:name是否带.的区别
- stringbuffer用法 java_StringBuffer的用法
- linux 内核头文件、内核库文件
- 【设计模式】05模板方法模式学习笔记
- 5W1H、5W2H 分析法
- 数据库、模式、表的关系(转载)
- 我的世界服务器扔东西显示垃圾箱,我的世界:MC里6个隐藏的垃圾桶,第一个可回收,第二个很常见?...
- 完全用Linux工作
- iOS常用的功能(打电话、发短信、发邮件等)
- vscode配置python环境以及使用json文件配置默认解释器、代码自动保存、pydesigner、kite
- 怎么样matlab做玫瑰花,Matlab画的玫瑰花
- 自己动手编译最新Android源码及SDK(Ubuntu)
- Eplan-中断点(3)
- 登录Linux操作系统并执行第一个C语言代码