MongoDB副本集的搭建

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

参考博文: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

     本文转自1321385590 51CTO博客,原文链接:http://blog.51cto.com/linux10000/2061153,如需转载请自行联系原作者





相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
存储 NoSQL Linux
玩转MongoDB—搭建MongoDB集群
如题,本次玩转MongoDB我们从搭建集群开始,话说MongoDB一共有三种搭建集群的方式,但是由于版本更新,据说在4.0版本之后第一种方式,也就是主从复制的方式被遗弃掉了,大概是因为这种方式的效率不高吧,因为目前我们使用的是5.x版本,因此就不花时间讲解第一种方式了,在其他的文章上摘录了一下,可供大家参考。重点还是要放在后两种。
663 0
玩转MongoDB—搭建MongoDB集群
|
26天前
|
存储 NoSQL MongoDB
MongoDB 复制(副本集)
10月更文挑战第17天
34 2
MongoDB 复制(副本集)
|
2月前
|
存储 NoSQL Shell
MongoDB复制(副本集)总结
这篇文章是关于MongoDB副本集的总结,包括复制原理、设置副本集、案例分析等内容。
41 1
|
3月前
|
NoSQL MongoDB Windows
MongoDB 读写分离——Windows MongoDB 副本集配置
MongoDB 读写分离——Windows MongoDB 副本集配置
66 0
|
6月前
|
监控 NoSQL MongoDB
【MongoDB 专栏】MongoDB 的副本集故障转移与恢复
【5月更文挑战第11天】MongoDB的副本集是高可用性关键,提供数据冗余和自动故障转移。由主节点和从节点组成,主节点处理写操作,从节点同步数据。当主节点故障,副本集通过选举产生新主节点,确保服务不间断。故障转移涉及节点优先级和数据同步状态的考量。恢复阶段解决数据不一致,重点包括节点部署监控、数据同步策略、选举机制和备份恢复计划。网络延迟和大规模数据可能带来挑战,需优化网络、性能调优和定期演练。随着技术进步,副本集的故障转移与恢复将更高效、智能,保障数据安全,支撑业务系统的稳定运行。
349 3
【MongoDB 专栏】MongoDB 的副本集故障转移与恢复
|
6月前
|
NoSQL MongoDB 数据库
国内唯一 阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”
阿里云连续第五年斩获MongoDB合作伙伴奖项,也是唯一获此殊荣的中国云厂商。一起学习MongoDB副本集的选举机制以及可能会出现的特殊情况。
国内唯一 阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”
|
5月前
|
存储 监控 NoSQL
MongoDB 副本集:构建可靠的数据备份与高可用性系统
MongoDB 副本集:构建可靠的数据备份与高可用性系统
103 0
|
NoSQL MongoDB
MongoDB分片+副本集高可用集群的启停步骤
MongoDB分片+副本集高可用集群的启停步骤
273 0
|
6月前
|
监控 NoSQL 算法
【MongoDB】 MongoDB的副本集是什么?
【4月更文挑战第1天】【MongoDB】 MongoDB的副本集是什么?
|
存储 NoSQL Ubuntu
21 MongoDB高级 - 复制(副本集)
21 MongoDB高级 - 复制(副本集)
67 1