MongoDB-3.2.6 副本集 和主从

yum实例

vim /etc/yum.repos.d/mongodb-org-3.2.repo

[mongodb-org-3.2]name=Mongodbbaseurl=http://repo.mongodb.org/yum/redhat/6Server/mongodb-org/3.2/x86_64/gpgcheck=0enabled=1

然后yum -y install mongodb-org

便捷启动脚本(更正一下,3.0 以上有自己官方的脚本,而且是有优化过的。即 不推荐使用这个。可以修改/etc/init.d/mongod 里面的配置),注意脚本里用户为mongod,说以定义数据目录的时候和日志 和配置文件的时候都需要chown -R 不然mong连日志都没权限写进去。

(以下都可以复制粘贴执行)

优化一:

echo "never" > /sys/kernel/mm/transparent_hugepage/enabled&&echo "never" > /sys/kernel/mm/transparent_hugepage/defrag

优化二:

cat >/etc/security/limits.d/mongodb-nproc.conf <<V# Default limit for number of user's processes to prevent# accidental fork bombs.# See rhbz #432903 for reasoning.*          soft    nproc     35000mongod       soft    nproc     unlimitedV
#!/bin/bashinstance=$1action=$2case "$action" in        'start')                mongod -f /etc/$instance.cnf                ;;        'stop')                mongod -f /etc/$instance.cnf --shutdown                ;;        'restart')                mongod -f /etc/$instance.cnf --shutdown                mongod -f /etc/$instance.cnf                ;;esac#当然配置文件要放在/etc/下面咯  by:V
openssl rand -base64 741 > /data/mongo22.key --文件内容采base64编码,一共741个字符修改文件权限:chmod 600 /data/mongo22.key

配置文件实例

dbpath=/data/mongodata2fork=trueport=27019logpath=/data/log/mongolog2/mongodb1.logauth=truekeyFile = /data/mongo22.keyreplSet = qby

其中id 要和 replSet 中设置的一样。而 config_repl 这个名字 可以随意命名,相当于 副本集 的会议室。而members 相当于会议室里的成员。

> config_repl={_id:'gechongrepl',members:[... {_id:0,host:'192.168.91.128:27017',priority:10},... {_id:1,host:'192.168.91.129:27017',priority:9},... {_id:2,host:'192.168.91.130:27017',priority:9}]}

之后的添加和删除节点可以用以下2个步骤来实现。

#比如会议的名称还是和上面一样是config_repl> config_repl={_id:'gechongrepl',members:[ ... {_id:0,host:'192.168.91.128:27017',priority:10}, ... {_id:1,host:'192.168.91.129:27017',priority:9},]}>rs.reconfig(config_repl)  #相当于重新加载了配置,这里你可以删除节点或者增加节点。>rs.status() #然后查看状态

还有一种用rs.add(“127.0.0.1:27020”) 或者 rs.remove() 来进行。具体使用哪一种。自己区分。

============接下来 看一下主从。3.X 后面的主从有安全策略。当然要开启用户验证,不然有什么意义呢。 所以必须要开key 选项 这里为主的配置文件

Master

dbpath=/data/mongodatafork=trueport=27017logpath=/data/log/mongolog/mongodb1.logauth=truemaster=truekeyFile = /data/mongo.key

Slave

auth=truedbpath=/data/mongodatalogpath=/data/log/mongolog/mongo1.logfork=trueport=27017slave=true          #设置为slavesource=172.16.38.178:27017       #指定Master在哪keyFile = /data/mongo.key

当然也要有一个用户验证。有人会疑惑用哪个用户来进行数据验证和同步呢。Master会将操作记录在 local。oplog里面,然后从服务器定期去获取oplog内容。在slave上执行。

如果发现主从不同步,从上手动同步    db.runCommand({"resync":1})   #验证过,发现admin 里面的表会消失。 知道为什么的,可以告诉我一下。状态查询    db.runCommand({"isMaster":1}) #查询自己是不是master
在丛库上查询主库地址    > use local;    switched to db local    > db.sources.find();
#查看主从复制状态    db.printReplicationInfo();