一.为什么要配置mongodb的主从:
1.做主从,可以说是做数据的备份,有利于故障的恢复
2.做主从,可以做到读写分离,主节点负责写操作,从节点负责读操作,这样就把读写压力分开,保证系统的稳定性.
二.主从服务器的实现原理
首先,主节点会把本服务的与写有关的操作记录下来,读操来不记录,这些操作就记录在local数据库中的oplog.$admin这个集合中,这是一个固定集合,大小是可以配置的,主要是通过配置oplogSize这个参数来实现,单位是M,大小一般为磁盘剩余空间的5%左右.因为是固定集合所以当固定集合放满日志的时候,新进来的日志就会把最旧的日志覆盖掉,如果这个值设置的不合理,导致数据很快的被覆盖,而从节点没有来得及更新,这样就会产生数据不同步的情况.设置为主节点的local数据库有会有oplog.$admin与slave这两个集合.slave记录的是从节点的信息.
从节点与主节点的数据同步主要是从节点定时的会去连接主节点,请求主节点的操作日志,从而对自己的数据副表进行同样的操作来达到数据的同步.从节点的local数据库中会多了source与me这两个集合,source是记录主节点的信息,me是记录从节点的标识
三.mongodb主从配置中的知识点
1.主节点的配置主要是通过在启动mongodb时带上--master这个参数
2.从节点主要是通过参数--slave和--source 这两个参数 --source这个参数的值是 ip:端口
四.配置主从
首先要准备至少两台服务器,我这里准备的两台是192.168.1.1,192.168.1.2,并且这两台服务器都要装好了mongodb,怎么安装这里就不说明了.通信接口是27017,接下来我们就来开始动手吧
1.配置主节点
创建数据的存放目录与日志的存放目录:
mkdir /mongodb/master
mkdir /mongodb/log
接着把主节点的配置写在一个配置文件中,从而来启动的时候能用--config这个参数来指定配置,配置文件内容如下.
dbpath=/mongodb/master
logpath=/mongodb/log/master.log
master=true
fork=true
port=27017
oplogSize=2048
写好配置文件后,我们就可以启动一个主节点了:
/mongodb/bin/mongod --config /mongodb/bin/mongodb.conf
2.配置从节点
创建数据的存放目录与日志的存放目录:
mkdir /mongodb/slave
mkdir /mongodb/log
接着写从节点的配置文件.
dbpath=/mongodb/slave
logpath=/mongodb/log/slave.log
slave=true
source=192.168.1.2:27017
fork=true
port=27017
autoresync=true
写好配置文件后,我们就可以启动一个主节点了:
/mongodb/bin/mongod --config /mongodb/bin/mongodb.conf
到这里基本主从就配置完了,你可以查看主节点的local数据库里有没有slave,oplog.$admin,从节点中有没有source,me这几个集合
接下来你可以主节点创建数据库插入数据看看从节点是否同步过去了.这些都可以通过查看日志来查看的
五.查看主从的状态
db.printReplicationInfo():查看主节点的状态
db.printSlaveReplicationInfo():查看从节点的状态
六.改变oplogSize的大小
变更oplog的大小,这是一个挺大的工程
首先要停掉主节点,然后删除local数据库.
rm /data/db/local.*
接着再以--oplogSize来重新定义大小.
mongod --master --oplogSize 多少MB
再以--autoresync的选项重启所有从节点.
注:如果是在linux中记得在防火墙中开放主从连接的端口
主从的架构所要面临的问题:
1.如果读写都是对主节点的操作,那主节点无疑是压力过大.
2.如果主节点挂掉了,那这个架构就失效了
3.如果多个从节点从主节点复制数据,主节点压力会不会过大.