MongoDB副本集的搭建
参考博文:https://www.jianshu.com/p/ca620842868a
一、安装准备
1、修改系统配置
#关闭selinux、firewall
#修改/etc/security/limits.conf添加以下内容:
- soft nofile 65536
- hard nofile 65536
- soft nproc 65536
- hard nproc 65536
#修改/etc/security/limits.d/20-nproc.conf - soft nproc 65536
3、创建账户、目录
groupadd -g 600 mongo
useradd -u 600 -g mongo mongo
二、安装步骤
1、解压文件
tar xvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz -C /usr/local/
cd /usr/local
mv mongodb-linux-x86_64-enterprise-rhel70-3.6.2/ mongodb
cd mongodb
mkdir -p data/db
mkdir log
touch log/mongod.log
mkdir etc
touch etc/mongod.conf
chown -R mongo.mongo /usr/local/mongodb
2、分别在每台机器上配置config文件
vim etc/mongod.conf
dbpath = /usr/local/mongodb/data/db # 指定数据库路径
logpath = /usr/local/mongodb/log/mongod.log # 指定mongodb日志文件
logappend = true # 使用追加的方式写日志
port = 27017 #设置端口号为27017
bind_ip = 192.168.1.221
fork = true #设置以守护进程的方式启动mongod
replSet = bsbgpsrs #设置副本集的名字为myrs,同一副本集群的replSet名称
3、分别在每台机器上启动副本集
su - mongo
#修改环境变量
PATH=$PATH:$HOME/bin:/usr/local/mongodb/bin
export PATH
#启动
yum install -y net-snmp* gcc-c++
nohup mongod -f /usr/local/mongodb/etc/mongod.conf >/dev/null 2>&1 &
4、初始化副本集
登录任意一台机器的mongodb后台管理shell:
cd /usr/local/mongodb
./bin/mongo
use admin
config = {
"_id":"bsbgpsrs",
"members":[
{"_id":0,"host":"192.168.198.224:27017"},
{"_id":1,"host":"192.168.198.225:27017"},
{"_id":2,"host":"192.168.198.226:27017",arbiterOnly:true}
]
}
rs.initiate(config); #初始化配置
5、查看副本集状态
rs.status();
6 、添加验证
use admin
db.createUser({user:"admin",pwd:"Mongo/2018",roles:["root"]})
db.auth("admin","Mongo/2018")
三、测试副本集
1、测试副本集的数据复制功能
此时在我的机器上192.168.198.224是主节点,我们用mongo来登录shell。
cd /usr/local/mongodb
./bin/mongo
use test #创建test数据库
db.testdb.insert({"name":"yaya"}); #插入数据
我们用副本节点登录shell,我这里是192.168.198.225:
cd /usr/local/mongodb
./bin/mongo
use test
show tables
此时会报错:
[thread1] Error: listCollections failed: {
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk"
}
因为mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读。
myrs:SECONDARY> db.getMongo().setSlaveOk();
此时就可以读取数据了:
repset:SECONDARY> db.testdb.find();
控制台输出:{ "_id" : ObjectId("59676d711881041abab44477"), "name" : "yaya" }
所以,数据复制的功能是可用的。
2、测试副本集的故障转移功能
将主节点192.168.198.224的mongod进程杀死:
myrs:PRIMARY> use admin
myrs:PRIMARY> db.shutdownServer()
此时可以看到,192.168.198.225原本是副节点,此时自动转换为主节点。可以通过rs.status()来查看。
四、其他设置
1、取消透明大页在/etc/rc.d/rc.local增加下列内容:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
chmod +x /etc/rc.d/rc.local
2、Mongodb C drive安装
tar xvf mongo-c-driver-1.6.1.tar.gz
cd mongo-c-driver-1.6.1/
./configure -disable-automatic-init-and-cleanup
make
make install
转载于:https://blog.51cto.com/linux10000/2061153
MongoDB副本集的搭建相关推荐
- mongodb副本集架构搭建
高可用性通常描述一个系统经过专门的设计,从而减少停工时间.保存其服务的高度连续可用性,MongoDB提供的主从复制机制保证了多个数据库的数据同步,这对实现数据库的容灾.备份.恢复.负载均衡都是有极大的 ...
- MongoDB副本集搭建及在springboot中使用
MongoDB副本集搭建及在springboot中使用 一.mongoDB副本集的搭建 原则就是一台master(主),一台salve(从),一台arbiter(仲裁) 1.下载mongoDB htt ...
- Mongodb 副本集+分片集群搭建
环境需求: 在三台机器上搭建副本集,在副本集上做分片 服务器IP: 192.168.1.232/192.168.1.238/192.168.1.241 安装Mongodb all nodes: tar ...
- MongoDB副本集学习(一):概述和环境搭建
MongoDB副本集概述 以下图片摘自MongoDB官方文档:http://docs.mongodb.org/manual/core/replication-introduction/ Primary ...
- MongoDB副本集(Replica Sets)搭建教程
MongoDB副本集(Replica Sets)搭建教程 最近在生产环境下部署公司项目.由于项目中有使用到MongoDB,所以参考网上的博客,在服务器上进行搭建MongoDB副本集.今天打算将其记录成 ...
- MongoDb副本集详解及搭建
mongodb副本集 Mongodb副本集 一. 副本集成员 (1) 主节点(Primary) (2) 次节点(Secondary) (3) 仲裁节点(Arbiter) 二. 副本Oplog (1) ...
- MongoDB副本集搭建(超级详细)
MongoDB 副本集原理 什么是复制 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性 复制还允许从硬件故障和服务中断中恢复数据 为什么要复制 数据 ...
- MongoDB副本集搭建、连接php
文章目录 PHP连接MongoDB MongoDB副本集介绍 MongoDB副本集搭建 MongoDB副本集测试 PHP连接MongoDB php连接MongoDB需要安装拓展包有两种,分别是mong ...
- MongoDB副本集详解与搭建
1. 简介 MongoDB中的副本集(Replica Set)是一组维护相同数据集的mongod服务. 副本集可提供冗余和高可用性,是所有生产部署的基础.也可以说,副本集类似于有自动故障恢复功能的主从 ...
最新文章
- 连接到多台mysql_Oracle通过dblink连接到多台MySQL
- C和C++线性表的链式存储
- [安卓] 9、线程、VIEW、消息实现从TCP服务器获取数据动态加载显示
- cat 几行_迷风花说Cat!Cat因为林教练是好教练回去现实却给了一巴掌
- linux安装svn(yum安装)
- Redis 和 memcached 区别
- 安装matpower
- php mysql 嵌套查询_MYSQL数据库MySQL嵌套查询实例详解
- 帝国cms后台界面修改方法 最新版教程
- 用PS制作墙壁上的时尚立体文字图案
- 爬取游戏优惠信息,并且将结果发送到邮箱
- 理解性能的奥秘——应用程序中慢,SSMS中快(4)——收集解决参数嗅探问题的信息
- P2698 [USACO12MAR]Flowerpot S 题解
- 拥有百万粉丝的大牛讲述学Android的历程,附赠课程+题库
- JAVA学习从软件工程导论课自动出题软件编程项目开始
- SAP ABAP MIGO 262
- 多视角学习 (Multi-View Learning)
- 中国电信吴湘东:云网一体化将为运营商带来新的融合和创新
- (vue+【饿了么UI】tag组件封装)
- 解决:android 开发 WIFI 功能 密码输入正确时监听的问题
热门文章
- concat mysql sql注入_sql注入-mysql注入基础及常用注入语句
- linux内核用什么调试,什么是开发/调试Linux内核最有效和最优雅的方式
- 昌吉学院计算机工程系毕业后安排工作嘛,0昌吉学院.doc
- hexde php_怎样在PHP中把16进制HEX数据转换为2进制数据呢?
- 函数计算的是什么_【Excel函数教程】3个例子让你彻底玩转EDATE函数
- java textlistener_Java TextView.setOnEditorActionListener方法代码示例
- java newline_Java BufferedWriter.newLine()方法示例
- 关于“航天•轻舟机器人国赛技术交流会”邀请函
- 2021春季学期-创新设计与实践-Lesson2
- 是否患有新冠肺炎? 你咳嗽一声