yum实例
vim /etc/yum.repos.d/mongodb-org-3.2.repo
[mongodb-org-3.2] name=Mongodb baseurl=http://repo.mongodb.org/yum/redhat/6Server/mongodb-org/3.2/x86_64/ gpgcheck=0 enabled=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 35000 mongod soft nproc unlimited V
#!/bin/bash instance=$1 action=$2 case "$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/mongodata2 fork=true port=27019 logpath=/data/log/mongolog2/mongodb1.log auth=true keyFile = /data/mongo22.key replSet = 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/mongodata fork=true port=27017 logpath=/data/log/mongolog/mongodb1.log auth=true master=true keyFile = /data/mongo.key
Slave
auth=true dbpath=/data/mongodata logpath=/data/log/mongolog/mongo1.log fork=true port=27017 slave=true #设置为slave source=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();