zoukankan      html  css  js  c++  java
  • mongo 集群搭建、测试、开启验证

    1. port = 27017        //监听端口  
    2. fork = true         //后台运行  
    3. pidfilepath = /var/run/mongodb/mongodb.pid    //进程PID文件  
    4. logpath = /var/log/mongodb/mongodb.log        //日志文件  
    5. dbpath =/var/lib/mongodb           //db存放目录  
    6. journal = true                   //存储模式  
    7. nohttpinterface = true           //禁用http  
    8. directoryperdb=true              //一个数据库一个文件夹  
    9. logappend=true                  //追加方式写日志  
    10. replSet=repmore                 //集群名称,自定义  
    11. oplogSize=1000                  //oplog大小  
     
    sudo vi /etc/mongodb.27017.conf
    dbpath = /data/mongo/27017/db #数据文件存放目录
    logpath = /data/mongo/logs/mongodb.log #日志文件存放目录
    port = 27017  #端口
    fork = true  #以守护程序的方式启用,即在后台运行
    nohttpinterface = true
    replSet=repmore
    directoryperdb=true
    logappend=true
    auth=false  //不关闭没法同步
     
    sudo vi /etc/mongodb.27018.conf
    dbpath = /data/mongo/27018/db #数据文件存放目录
    logpath = /data/mongo/logs/mongodb.log #日志文件存放目录
    port = 27018  #端口
    fork = true  #以守护程序的方式启用,即在后台运行
    nohttpinterface = true
    replSet=repmore
    directoryperdb=true
    logappend=true
    auth=false
     
    sudo vi /etc/mongodb.27019.conf
    dbpath = /data/mongo/27019/db #数据文件存放目录
    logpath = /data/mongo/logs/mongodb.log #日志文件存放目录
    port = 27019  #端口
    fork = true  #以守护程序的方式启用,即在后台运行
    nohttpinterface = true
    replSet=repmore
    directoryperdb=true
    logappend=true
    auth=false
     
    同一台机器启动 需要使用numactl命令
    numactl --interleave=all mongod -f /etc/mongodb.27017.conf
    numactl --interleave=all mongod -f /etc/mongodb.27018.conf
    numactl --interleave=all mongod -f /etc/mongodb.27019.conf
     
    连接其中一台
    mongo 127.0.0.1:27017
    use admin
    config={_id:"repmore",members:[{_id:0,host:"127.0.0.1:27017"},{_id:1,host:"127.0.0.1:27018"},{_id:2,host:"127.0.0.1:27019"}]};
    rs.initiate(config); 初始化
    在这里要注意,rs.initiate初始化也是要一定时间的,刚执行完rs.initiate,我就查看状态,从服务器的stateStr不是SECONDARY,而是stateStr" : "STARTUP2",等一会就好了。
    rs.status() 产看状态
    rs.remove("127.0.0.1:27019”)//删除
    rs.add("127.0.0.1:27019”)//添加 
     
    测试
    1. repmore:PRIMARY> show dbs;  
    2. local    1.078125GB  
    3. repmore:PRIMARY> use test  
    4. switched to db test  
    5. repmore:PRIMARY> db.test.insert({'name':'tank','phone':'12345678'});  
    6. repmore:PRIMARY> db.test.find();  
    7. { "_id" : ObjectId("52af64549d2f9e75bc57cda7"), "name" : "tank", "phone" : "12345678” }
    1. [root@localhost mongodb]# mongo 127.0.0.1:27018   //连接  
    2. MongoDB shell version: 2.4.6  
    3. connecting to: 127.0.0.1:27018/test  
    4. repmore:SECONDARY> show dbs;  
    5. local    1.078125GB  
    6. test    0.203125GB  
    7. repmore:SECONDARY> db.test.find();     //无权限查看  
    8. error: { "$err" : "not master and slaveOk=false", "code" : 13435 }  
    9. repmore:SECONDARY> rs.slaveOk();       //从库开启  
    10. repmore:SECONDARY> db.test.find();     //从库可看到主库刚插入的数据  
    11. { "_id" : ObjectId("52af64549d2f9e75bc57cda7"), "name" : "tank", "phone" : "12345678" }  
    12. repmore:SECONDARY> db.test.insert({'name':'zhangying','phone':'12345678'});   //从库只读,无插入权限  
    13. not master  
     
    db.createUser({user:'sleliao',pwd:'sleliao',roles:['userAdminAnyDatabase','dbAdminAnyDatabase']}) //可登陆所有db的用户
    db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]}) //超级管理员
     
     配置完成之后启动认证
    #auth=false
    keyFile = /home/zhangxd/work/mongodb/keyfiletest
    生成key
     openssl rand -base64 90 > openssl rand -base64 90 > /root/software/mongodb/keyfiletest
     scp  /root/software/mongodb/keyfile root@192.168.91.133:/root/software/mongodb/ 复制到其他节点
     sudo chmod 600 ./keyfiletest  给600权限
    然后重启3台服务器,去客户端测试一下 ok了
     
     
    mongodb replica set 多服务器 高可用 配置 详解 http://blog.51yip.com/nosql/1580.html
    sudo chmod 600 ./keyfiletest
     
    查看读写日志
    切到想看日志的db
    use test
    db.setProfilingLevel(2)  设置读写log
    profile级别有三种:
    0:不开启
    1:记录慢命令,默认为大于100ms
    2:记录所有命令
    3、查询profiling记录
     
    db.getCollection('system.profile').find({}).sort({ts:-1})
     
     
     
     
     
  • 相关阅读:
    播放m3u文件时不能时时更新的问题
    Oracle视图详解
    Oracle视图的作用与安全性
    Ext GridPanel 表头合并
    [AJAX] 001 AJAX核心操作
    [Java] 系统环境变量配置
    [AJAX] 002 AJAX异步验证
    判断文章/帖子操作权限
    让Tee 7.x版本和FastReport 3.x版本共存
    mysql基本语句
  • 原文地址:https://www.cnblogs.com/zhangxd0112/p/6876801.html
Copyright © 2011-2022 走看看