mongo学习笔记三:Mongodb的三种集群(Master-Slave)
2018-03-26 09:49
573 查看
Mongodb集群----Master/SlaveMongodb是时下流行的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 入门(安装与配置)》注意:后面所有集群搭建均是通过配置文件进行的,故请使用“方式二:通过配置文件方式启动”来启动mongodb3.修改mongodb配置文件192.168.1.131(主)上的mongodb.conf配置如下:注:mongodb.conf在/usr/local/mongodb目录下dbpath=/usr/local/mongodb/data/ logpath=/usr/local/mongodb/logspidfilepath=/usr/local/mongodb/master.pid directoryperdb=true logappend=true bind_ip=192.168.1.131port=27017oplogSize=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.133port=27017 oplogSize=10000 fork=true noprealloc=true slave=truesource=192.168.1.131:27017
4.启动mongo分别在131和133上执行以下命令,启动mongocd /usr/local/mongodbbin/mongod --config mongodb.conf
至此mongodb的主从集群搭建完成,下面进行主从集群的测试在主节点131上连接到终端:/usr/local/mongodb/bin/mongo 192.168.1.131:27017#建立database 数据库。use database;#创建collectionsdb.createCollection("test")db.test.insert({"test1":"testval1"})#查询testdb数据看看是否成功。db.test.find();
5.测试主从集群检查从主机133的数据。/usr/local/mongodb/bin/mongo 192.168.1.133:27017show 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、主从复制缺陷思考主节点挂了能否自动切换连接?
目前需要手工切换。主节点的写压力过大如何解决?
从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大?
就算对从节点路由实施路由访问策略能否做到自动扩展?
简介:使用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 入门(安装与配置)》注意:后面所有集群搭建均是通过配置文件进行的,故请使用“方式二:通过配置文件方式启动”来启动mongodb3.修改mongodb配置文件192.168.1.131(主)上的mongodb.conf配置如下:注:mongodb.conf在/usr/local/mongodb目录下dbpath=/usr/local/mongodb/data/ logpath=/usr/local/mongodb/logspidfilepath=/usr/local/mongodb/master.pid directoryperdb=true logappend=true bind_ip=192.168.1.131port=27017oplogSize=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.133port=27017 oplogSize=10000 fork=true noprealloc=true slave=truesource=192.168.1.131:27017
4.启动mongo分别在131和133上执行以下命令,启动mongocd /usr/local/mongodbbin/mongod --config mongodb.conf
至此mongodb的主从集群搭建完成,下面进行主从集群的测试在主节点131上连接到终端:/usr/local/mongodb/bin/mongo 192.168.1.131:27017#建立database 数据库。use database;#创建collectionsdb.createCollection("test")db.test.insert({"test1":"testval1"})#查询testdb数据看看是否成功。db.test.find();
5.测试主从集群检查从主机133的数据。/usr/local/mongodb/bin/mongo 192.168.1.133:27017show 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学习笔记四:Mongodb的三种集群(Replica Set)
- 搭建高可用mongodb集群master-slave模式
- MongoDB水平分片集群学习笔记
- 学习MongoDB(四)——Master/Slave模式
- MySQL学习笔记--复制建立新Slave的方法:克隆Master\Slave
- 【学习笔记】Redis主从(Master,Slave)
- Mongodb集群——master/slave
- MongoDB 学习笔记(三) MongoDB (replica set) 集群配置
- MongoDB水平分片集群学习笔记
- Spring Data MongoDB]学习笔记--牛逼的MongoTemplate
- mongo-java-driver -3.2.2学习笔记-01-MongoDB Driver Quick Tour
- Jenkins学习笔记(四) master/slave的初步认识
- redis 学习笔记(3)-master/slave(主/从模式)
- redis 学习笔记(3)-master/slave(主/从模式)
- MongoDB学习2_Mongodb集群搭建的三种方式
- Mongodb集群——master/slave
- MongoDB入门学习笔记之mongo shell和java客户端
- Jenkins学习笔记(三) master/slave的初步认识
- mongo-java-driver -3.2.2学习笔记-02-MongoDB Driver Admin Quick Tour
- redis 学习笔记(3)-master/slave(主/从模式)