zoukankan      html  css  js  c++  java
  • mongodb 复制集 2


    一,节点类型:

    a) 主节点:支持读写

    b) 从节点:支持读(需设置)

    二, 节点环境

    主节点:192.168.129.47
    mongodb安装目录:/home/en/tool/mongodb-linux-x86_64-2.6.9/
    mongodb数据目录:/home/en/njqgd_db
    mongodb日志目录:/home/en/njqgd_log
    mongodb密匙目录:/home/en/njqgd_key

    node.js 程序目录:/home/en/njqgd_node

    java  程序目录:/home/en/njqgd_tomcat/apache-tomcat-7.0.61

    从节点:192.168.129.48
    mongodb安装目录:/home/en/tool/mongodb-linux-x86_64-2.6.9/
    mongodb数据目录:/njqgd_db/db
    mongodb日志目录:/njqgd_db/log
    mongodb密匙目录:/njqgd_db/key

    清空从节点数据目录:rm -rf /njqgd_db/db/* (请确保从节点目录为空,若不为空执行此命令)

    1.主节点操作:

        1) cd /home/en/tool/mongodb-linux-x86_64-2.6.9/bin
        2) sudo echo "njqgd db 1" > /home/en/njqgd_key/key
        3) sudo chmod 600 /home/en/njqgd_key/key
        4) sudo ./mongod --dbpath=/home/en/njqgd_db/ --logpath=/home/en/njqgd_log/mongodb.log --port 27017  --replSet njqgd --keyFile /home/en/njqgd_key/key --maxConns=2000 --fork --logappend (此操作需等待约半分钟)
        
        出现如下内容,说明第4步操作成功:
        about to fork child process, waiting until server is ready for connections.
        forked process: XXXX
        child process started successfully, parent exiting
    
        5) 现在开始进行从节点操作,从节点操作完毕,再进行下一步.
        6) cd /home/en/tool/mongodb-linux-x86_64-2.6.9/bin
        7) sudo ./mongo
        8) use admin
        9) db.runCommand({"replSetInitiate" : {"_id" : "njqgd","members" : [{"_id" : 0,"host" : "192.168.129.47:27017"},{"_id" : 1,"host" : "192.168.129.48 :27017"}]}});
        出现如下内容,说明第9步操作成功:
        {
            "info" : "Config now saved locally.  Should come online in about a minute.",
            "ok" : 1
        }
        10) 所有操作完毕.

    2.从节点操作:

        1) cd /home/en/tool/mongodb-linux-x86_64-2.6.9/bin
        2) sudo echo "njqgd db 1" > /njqgd_db/key/key (此处 echo 命令后面 双引号内的内容请和主节点保持一致)
        3) sudo chmod 600 /njqgd_db/key/key
        4) sudo ./mongod --dbpath=/njqgd_db/db/ --logpath=/njqgd_db/log/mongodb.log --port 27017  --replSet njqgd/192.168.129.47:27017 --keyFile /njqgd_db/key/key --maxConns=2000 --fork --logappend
    
        出现如下内容,说明第4步操作成功:
        about to fork child process, waiting until server is ready for connections.
        forked process: XXXX
        child process started successfully, parent exiting
    
        5) 从节点操作完成,请继续主节点操作第6步.

    3. 添加数据库操作用户

        1) cd /home/en/tool/mongodb-linux-x86_64-2.6.9/bin
        2) sudo ./mongo
        3) use admin
        4) db.addUser('njqgd','njqgd');
        5) use wqdwxt_njqgd
        6) db.addUser('njqgd','njqgd');
        7) db.test.insert({'name':'test'})

     4. 节点主从状态切换

    cfg = rs.conf()
    cfg.members[0].priority = 2
    cfg.members[1].priority = 1
    cfg.members[2].priority = 0.5
    rs.reconfig(cfg)

    节点的 priority 值越大,切换时的优先级越高.设置好从节点的 priority 值后,调用一次 rs.reconfig 操作会导致当前主库中断,因为

    需要重新执行主节点竞选,大概几十秒后,新的主节点产生#查看复制集状态.

    rs.status()
    rs.isMaster()
    rs.conf()

    #查看从库状态
    db.printSlaveReplicationInfo()

    #设置从库可查询
    db.getMongo().setSlaveOk()
    rs.setSlaveOk()

    三. 开启各项服务.

    1.开启mongodb

    1) sudo -s (输入密码)
    2) cd /home/en/tool/mongodb-linux-x86_64-2.6.9/bin
    3) ./mongod --dbpath=/home/en/njqgd_db/ --logpath=/home/en/njqgd_log/mongodb.log --port 27017 --replSet njqgd --keyFile /home/en/njqgd_key/key --maxConns=2000 --fork --logappend
    出现如下类似内容说明成功
        about to fork child process, waiting until server is ready for connections.
        forked process: XXXX
        child process started successfully, parent exiting

    1.1 mongodb手动切换主从

    1) sudo -s (输入密码)
    2) cd /home/en/tool/mongodb-linux-x86_64-2.6.9/bin
    3) ./mongo
    4) rs.isMaster();
    如果出现如下内容
    {
            "setName" : "njqgd",
            "setVersion" : 2,
            "ismaster" : true,
            "secondary" : false,
            "hosts" : [
                    "192.168.129.47:27017",
                    "192.168.129.48 :27017"
            ],
            "primary" : "192.168.129.47:27017",
            "me" : "192.168.129.48:27017",
            "maxBsonObjectSize" : 16777216,
            "maxMessageSizeBytes" : 48000000,
            "maxWriteBatchSize" : 1000,
            "localTime" : ISODate("2015-05-09T02:20:08.633Z"),
            "maxWireVersion" : 2,
            "minWireVersion" : 0,
            "ok" : 1
    }
     ismaster为true 当前节点即为主节点(就不用进行下面的操作)
    
    5) use admin
    6) db.auth('njqgd','njqgd');
    7) rs.status();
    {
            "set" : "njqgd",
            "date" : ISODate("2015-05-09T02:28:35Z"),
            "myState" : 1,
            "members" : [
                    {
                            "_id" : 0,
                            "name" : "192.168.129.47:27017",
                            "health" : 1,
                            "state" : 1,
                            "stateStr" : "PRIMARY",
                            "uptime" : 54073,
                            "optime" : Timestamp(1431138513, 2),
                            "optimeDate" : ISODate("2015-05-09T02:28:33Z"),
                            "electionTime" : Timestamp(1431084460, 1),
                            "electionDate" : ISODate("2015-05-08T11:27:40Z"),
                            "self" : true
                    },
                    {
                            "_id" : 1,
                            "name" : "192.168.129.48:27017",
                            "health" : 1,
                            "state" : 2,
                            "stateStr" : "SECONDARY",
                            "uptime" : 54059,
                            "optime" : Timestamp(1431138512, 3),
                            "optimeDate" : ISODate("2015-05-09T02:28:32Z"),
                            "lastHeartbeat" : ISODate("2015-05-09T02:28:33Z"),
                            "lastHeartbeatRecv" : ISODate("2015-05-09T02:28:33Z"),
                            "pingMs" : 1,
                            "syncingTo" : "222.186.43.150:27017"
                    }
            ],
            "ok" : 1
    }
    要记住 节点顺序 以便下一步操作
    6) cfg = rs.conf() <回车>
     cfg.members[0].priority = 2 <回车> (此处中括号中是节点顺序.从0开始)
    cfg.members[1].priority = 1 <回车>
    rs.reconfig(cfg) <回车>
    节点的 priority 值越大,切换时的优先级越高.设置好从节点的 priority 值后,调用一次 rs.reconfig 操作会导致当前主库中断,因为
    
    需要重新执行主节点竞选,大概几十秒后,新的主节点产生#查看复制集状态.

    2.开启node.js

    1) sudo -s (输入密码)
    2) forever stopall(开发人员,在执行此命令之前 请使用forever list 记录日志位置)
    3) forever start -c "npm start" /home/en/njqgd_node

    3.开启tomcat

    1) sudo -s(输入密码)
    2) source /root/.profile
    3) cd /home/en/njqgd_tomcat/apache-tomcat-7.0.61/bin
    4) sh shutdown.sh
    5) sh startup.sh

    注:

    mongodb 2.4 以后使用了新的权限系统

    创建 最高权限用户(创建完毕后 需要重新登录):

    use admin

    db.createUser(
    {
    user:"njqgd",
    pwd:"njqgd",
    roles:["root"]
    }
    )

    登陆:

    mongo -u njqgd -p njqgd

    创建普通用户:

    use wqdwxt_njqgd

    db.createUser(
    {
    user:"njqgd",
    pwd:"njqgd",
    roles:[
    {role:"readWrite",db:"wqdwxt_njqgd"}
    ]
    }
    )

    参考:

    http://blog.csdn.net/irelandken/article/details/8003315
    http://lovelace.blog.51cto.com/1028430/1441043
    http://www.cnblogs.com/unqiang/p/3723643.html
    http://blog.51yip.com/nosql/1582.html
    http://www.royalwzy.com/?p=317

      

  • 相关阅读:
    apache和tomcat有什么不同,为什么要整合apache 和tomcat
    使用jstack分析cpu消耗过高的问题
    eclipse建立springMVC 简单项目
    JAVA中的反射机制
    MySQL索引的Index method中btree和hash的优缺点
    JAVA中的线程安全与非线程安全
    Java中普通代码块,构造代码块,静态代码块执行顺序
    jvm的内部体系结构浅析
    CPU思考
    linux内核调度算法(2)--CPU时间片如何分配 转!
  • 原文地址:https://www.cnblogs.com/MDK-L/p/4475959.html
Copyright © 2011-2022 走看看