mongdb集群
一、mongodb的集群
mongodb有两种架构:
第一种架构:和mysql的结构类似,也有主从结构,但是他不能实现故障自动切换
于是有了第二种架构。官方不推荐使用这种架构。
第二种:mongodb的复制集(副本集)。
一般至少有3台机器,这两边也有主从,但是主从是通过选举出来的。
主负责读写(写入到oplog日志中),从负责监控主服务器,同步主的数据。一旦主挂掉,然后代替主。
二、设置副本集的参数
(1)replset:设置副本集名称
(2)oplogsize:设置oplog日志文件大小
(3)fastsync:完成快速同步。
(4)replindexprefetch:在实现复制时,根据索引实现数据预取
可以实现快速装载主节点上的数据的。尤其是在修改量特别大的情况下。
可以使用它。它只能在2.2版本以后才能使用。它也只能基于ID索引实现
三.设置集群
实验环境
主机 IP 虚拟通道
centos1 192.168.3.10 vmnet8
centos2 192.168.3.11 vmnet8
centos3 192.168.3.12 vmnet8
1.将三台服务器全部安装mongo
tar xf mongodb-linux-x86_64-amazon-3.2.7.tgz
mv mongodb-linux-x86_64-amazon-3.2.7 /usr/local/mongodb
创建数据目录
mkdir /data/db -p
创建配置文件
cd /usr/local/mongodb/
vim mongodb.conf #增加以下内容
dbpath = /data/db
logpath = /data/mongo.log
logappend = true
port = 27017
noauth = true
fork = true
replSet = mongo
#注意这里的"s" 必须大写
将配置文件复制到其他的两台服务器上
启动mongdb
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf
child process started successfully, parent exiting
此时启动成功。
2.初始化副本集
连接任意一台mongo
> rs.status() #查看状态
{
"info" : "run rs.initiate(...) if not yet done for the set",
"ok" : 0,
"errmsg" : "no replset config has been received",
"code" : 94
定义初始化配置文件
cfg={"_id":"mongo","members":[{"_id":0,"host":"192.168.3.10:27017"},{"_id":1,"host":"192.168.3.11:27017"},{"_id":2,"host":"192.168.3.12:27017"}]}
显示以下内容为定义成功。
{
"_id" : "mongo",
"members" : [
{
"_id" : 0,
"host" : "192.168.3.10:27017"
},
{
"_id" : 1,
"host" : "192.168.3.11:27017"
},
{
"_id" : 2,
"host" : "192.168.3.12:27017"
}
]
}
初始化配置文件.
初始化的时候注意关闭另外两台从服务器的Iptables,否则会报错。
> rs.initiate(cfg)
{ "ok" : 1 }
如果配置文件中有bind_ip=127.0.0.1初始化会报以下错误。
"errmsg" : "No host described in new configuration 1 for replica set mongo maps to this node",
>rs.status() 可以查看集群信息
mongo:PRIMARY> db.isMaster() #也可以查看本机的身份
{
"hosts" : [
"192.168.3.10:27017",
"192.168.3.11:27017",
"192.168.3.12:27017"
],
"setName" : "mongo",
"setVersion" : 1,
"ismaster" : true,
"secondary" : false,
"primary" : "192.168.3.10:27017",
"me" : "192.168.3.10:27017",
测试:
我们在主节点上插入数据
mongo:PRIMARY> use test
switched to db test
mongo:PRIMARY> db.test.insert({name:"xiaoming",age:50})
WriteResult({ "nInserted" : 1 })
mongo:PRIMARY> db.test.find()
{ "_id" : ObjectId("58b540f952cbd488f553914a"), "name" : "xiaoming","age" : 50 }
在从节点上查看数据
mongo:SECONDARY> rs.slaveOk()
mongo:SECONDARY> show dbs;
admin 0.000GB
local 0.000GB
test 0.000GB
mongo:SECONDARY> db.test.find()
{ "_id" : ObjectId("58b540f952cbd488f553914a"), "name" : "xiaoming", "age" : 50 }
测试数据库是否能够自动切换
我们停止主服务器。
退出第二台的mongo,重新登录
我们发现第二台mongo 自动成为了主。
mongdb集群的更多相关文章
- c# 链接mongDB集群实战开发3
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zuoming120/article/details/25702295 c# 链接mongDB集群 一 ...
- MongDB集群容灾方案步骤
MongoDB复制集优/特点支持大数据量.高扩展性.高性能.灵活数据模型.高可用性.同步机制数据复制的目的是使数据得到最大的可用性,避免单点故障引起的整站不能访问的情况的发生,Mongodb的副本集在 ...
- MongDB集群部署
http://blog.csdn.net/luonanqin/article/details/8497860 参数解释: dbpath:数据存放目录 logpath:日志存放路径 pidfilepat ...
- MongoDB集群架构及搭建
MongoDB分布式集群 MongDB分布式集群能够对数据进行备份,提高数据安全性,以及提高集群提高读写服务的能力和数据存储能力.主要通过副本集(replica)对数据进行备份,通过分片(shardi ...
- 搭建mongodb集群(副本集+分片)
搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集 ...
- Mongodb集群部署ReplicaSet+Sharding -摘自网络
网上关于三种集群方式的搭建方式很多,都是分开来介绍的.Replica Set (复制集成)主要是做主从库的,但是没法实现负载均衡的效果,真正实现这个的,是Sharding(分片集群),通过数据分布在每 ...
- MongoDB集群
高可用的MongoDB集群 1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l 面向集合的存储:适合存储 ...
- CentOS 搭建Graylog集群详解
1. Graylog2 简介 Graylog 是一个简单易用.功能较全面的日志管理工具,相比 ELK 组合, 优点: 部署维护简单,一体化解决方案,不像ELK三个独立系统集成. 查相比ES json语 ...
- 高可用的MongoDB集群
1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l 面向集合的存储:适合存储对象及JSON形式的数据. l ...
随机推荐
- shell脚本计算Linux网卡流量
本文介绍了计算linux网卡流量的一个shell脚本,一个通过固定间隔时间获取ifconfig eth0 的字节值而计算出网卡流量的方法,有需要的朋友参考下. 使用shell脚本计算Linux网卡流量 ...
- 避免警报疲劳:每个 K8s 工程团队的 8 个技巧
避免警报疲劳:每个 K8s 工程团队的 8 个技巧 监控 Kubernetes 集群并不容易,警报疲劳通常是一个问题.阅读这篇文章,了解减少警报疲劳的有用提示. 如果您是随叫随到团队的一员,您可能知道 ...
- 云原生应用管理,像管理手机APP一样管理企业应用
我们在使用智能手机的时候,手机APP从应用市场一键安装,安装好即点即用,当有新版本一键升级,如果不想用了长按图标删除,整个过程非常简单,小朋友都能熟练掌握.而对于企业应用,由于结构复杂.可用性要求高. ...
- 3、Spring的DI依赖注入
一.DI介绍 1.DI介绍 依赖注入,应用程序运行依赖的资源由Spring为其提供,资源进入应用程序的方式称为注入. Spring容器管理容器中Bean之间的依赖关系,Spring使用一种被称为&qu ...
- pipeline option指令
目录 一.简介 二.参数 buildDiscarder checkoutToSubdirectory disableConcurrentBuilds newContainerPerStage retr ...
- Linux服务器被黑 排查思路
目录 一.为何会被入侵? 二.排查 入侵排查 检查是否还存在被登陆可能 计划任务 被修改的文件 筛选日志 日志恢复 找到异常进程-1 找到异常进程-2 找到异常进程-3 找到异常进程-4 三.总结 一 ...
- [BUUCTF]REVERSE——[WUSTCTF2020]Cr0ssfun
[WUSTCTF2020]Cr0ssfun 附件 步骤: 例行检查,无壳儿,64位程序,直接ida载入,检索程序里的字符串,根据提示跳转 看一下check()函数 内嵌了几个检查的函数,简单粗暴,整理 ...
- [BUUCTF]PWN——jarvisoj_test_your_memory
jarvisoj_test_your_memory 附件 步骤: 例行检查,32位程序,开启了nx保护 试运行一下程序,看看大概的情况 32位ida打开,习惯性的检索程序里的字符串,看到了有关flag ...
- 周期性任务(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 话说录入任务信息是件体力活,每个任务都是要一个字一个字码出来滴.要说一个项目文件,任务内容是主体,所以这作为体力活也不冤枉 ...
- CF1080B Margarite and the best present 题解
Content 有 \(t\) 次询问,每次询问给定两个整数 \(l,r\),求 \(\sum\limits_{i=l}^r (-1)^i\times i\). 数据范围:\(1\leqslant t ...