mongo学习笔记三:Mongodb的三种集群(Master-Slave)

Mongodb集群----Master/Slave
Mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式。
Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slaver。这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档。OS是CentOs7_x64系统,客户端用的是Java客户端。Mongodb版本是mongodb-linux-x86_64-3.2.9.tgz

简介:
使用mysql数据库时大家广泛用到,采用双机备份后主节点挂掉了后从节点可以接替 主机继续服务。所以这种模式比单节点的高可用性要好很多。
一、单个从节点

二、多个从节点
现在只是一个数据库服务器又提供写又提供读,机器承载会出现瓶颈。大家还记mysql里的读写分离吗?把20%的写放到主节点,80%的读放到从节点分摊了减少了服务器的负载。但是大部分应用都是读操作带来的压力,一个从节点压力负载不了,可以把一 个从节点变成多个节点。 


主从环境搭建 
1. 准备两台机器 ( 192.168.1.131 和192.168.1.133)
192.168.1.131 当作主节点,192.168.1.133作为从节点。

2.安装mongodb
前面已经详细介绍过mongodb的安装,这里就不再赘述,如有需要,详见《mongo学习笔记一:MongoDB 入门(安装与配置)》
注意:后面所有集群搭建均是通过配置文件进行的,故请使用“方式二:通过配置文件方式启动”来启动mongodb
3.修改mongodb配置文件
192.168.1.131(主)上的mongodb.conf配置如下:
注: mongodb.conf在/usr/local/mongodb目录下
dbpath=/usr/local/mongodb/data/
logpath=/usr/local/mongodb/logs
pidfilepath=/usr/local/mongodb/master.pid
directoryperdb=true
logappend=true
bind_ip=192.168.1.131
port=27017
oplogSize=10000
fork=true
noprealloc=true
master=true

192.168.1.133(从)上的mongodb.conf配置如下:
dbpath=/usr/local/mongodb/data/
logpath=/usr/local/mongodb/logs
pidfilepath=/usr/local/mongodb/slaver.pid
directoryperdb=true
logappend=true
bind_ip=192.168.1.133
port=27017
oplogSize=10000
fork=true
noprealloc=true
slave=true
source=192.168.1.131:27017

4.启动mongo
分别在131和133上执行以下命令,启动mongo
cd /usr/local/mongodb
bin/mongod --config mongodb.conf

至此mongodb的主从集群搭建完成,下面进行主从集群的测试
在主节点131上连接到终端:
/usr/local/mongodb/bin/mongo 192.168.1.131:27017
#建立database 数据库。use database;
#创建collections
db.createCollection("test")
db.test.insert({"test1":"testval1"})
#查询testdb数据看看是否成功。
db.test.find();

5.测试主从集群
检查从主机133的数据。
/usr/local/mongodb/bin/mongo 192.168.1.133:27017
show dbs;
use database;
show collections;
db.test.find();
可以看到主库上创建的database,collection以及插入的数据都同步到了从库,至此主从集群搭建完毕
注:
若执行是报错,请在从机上执行
rs.slaveOk()
说明:
在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。
对于replica set 中的secondary 节点默认是不可读的。

6.内核参数调整 
启动后有如下警告,需要调整内核参数
调整方法如下:
echo "never" > /sys/kernel/mm/transparent_hugepage/enabledecho "never" > /sys/kernel/mm/transparent_hugepage/defrag
设置完后重启mongodb即可(netstat -lntp查找,kill杀掉mongodb,再启动mongodb)
7、主从复制缺陷思考
  • 主节点挂了能否自动切换连接?
目前需要手工切换。
  • 主节点的写压力过大如何解决?
  • 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大?
  • 就算对从节点路由实施路由访问策略能否做到自动扩展?





你可能感兴趣的:(mongo,集群)