zoukankan      html  css  js  c++  java
  • MongoDB-3.2.6 副本集 和主从

     

    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(); 
    
  • 相关阅读:
    Windows消息机制
    inherited 为什么可以调用父类的private函数? [问题点数:100分,结帖人:h2plus0]
    C++Buidler6中需要注意的几个问题
    BGA封装芯片拆装全程纪实
    Delphi组件开发教程指南(四)组件生成过程(TWinControl)
    Delphi技巧集六 (等待执行完一个外部程序再执行另一个程序)
    C++ Builder高级应用开发指南
    干掉“Spirale”病毒
    完全看懂新世代x86指令集結構
    Delphi 组件撰写常问问题delphi 在整合环境中如何找出组件所产生的问题
  • 原文地址:https://www.cnblogs.com/shiyiwen/p/5562758.html
Copyright © 2011-2022 走看看