• 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})
     
     
     
     
     
  • 相关阅读:
    一个在线的C++帮助文档网站
    linux 学习笔记 (四)
    类的static成员函数和const成员函数
    Linux的inode、软链接、硬链接
    常用linux命令(三)
    多语言调用之 C++ 调用 Java JNI
    多语言调用之 Java调用C/C++
    NHibernate 操作原生SQL以及查询DataTable,DataSet
    DataGridView控件用法合集
    Java AOP实战 寻找SQL的引用路径
  • 原文地址:https://www.cnblogs.com/zhangxd0112/p/6876801.html
Copyright © 2020-2023  润新知