[转帖]mongodb 2.6.1 主从(master/slave) 实现 区别2.4_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3026 | 回复: 0   主题: [转帖]mongodb 2.6.1 主从(master/slave) 实现 区别2.4        下一篇 
flying
注册用户
等级:下士
经验:153
发帖:75
精华:0
注册:2011-8-25
状态:离线
发送短消息息给flying 加好友    发送短消息息给flying 发消息
发表于: IP:您无权察看 2015-3-18 17:59:30 | [全部帖] [楼主帖] 楼主

mongodb2.6.1和2.4变化很大,网上很多中文教程都是基于2.4来做主从设置,但是2.6完全不一样,只有参考mongodb官网的教程来推测和设置,但是英语太差,有可能有很多没理解正确。
我需要mongodb做主从设置,并且要开启认证,在2.4中,只要主从的local库有一样的用户,然后admin库里面有用户,就可以很好的开启认证。但是在2.6中,local库不能单独添加用户了,用户必须有能访问所有数据库的权限,才能访问local库,所以2.6中不能像2.4那样设置主从并且开启认证。而且2.6里面也好像基本不再推荐以前的master/slave方式,而是用replica来实现。replica再加上key认证,才能实现和主从一样的方式,并且开启了安全认证。
下面是案例:

master:127.0.0.1:30010
slave:127.0.0.1:30020

  1. 用openssl生成认证使用的key

    Shell

    1 openssl rand-base64741>mongodb-keyfile



    系统没有openssl命令的先安装下,yum或者apt安装下。
    我这里把mongodb-keyfile放到了/etc/mongodb/下面,用于认证使用。

  2. 生成配置文件和数据库目录

    Shell

    1 2 mkdir-p/data/db_master
    mkdir-p/data/db_slave



    mongodb master 的配置master.conf,放在/etc/mongodb下面:

    YAML

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 net:
    bindIp: 127.0.0.1

    port: 30010

    storage:

    dbPath: "/data/db_master"

    directoryPerDB: true

    journal:

    enabled: true

    syncPeriodSecs: 15

    systemLog:

    destination: file

    path: "/data/db_master/mongodb.log"

    quiet: true

    logAppend: true

    security:

    keyFile: "/etc/mongodb/mongodb-keyfile"

    authorization: enabled

    processManagement:

    fork: true

    operationProfiling:

    slowOpThresholdMs: 100

    mode: slowOp

    replication:

    replSetName: rs0

    oplogSizeMB: 10240



    slave的配置文件和master完全一样,只是数据库和日志文件的path修改/data/db_master/为/data/db_slave/

  3. 分别启动master和slave:

    Shell

    1 2 numactl--interleave=all mongod--config/etc/mongodb/master.conf
    numactl--interleave=all mongod--config/etc/mongodb/slave.conf



    numactl –interleave=all传说可以提高mongodb在多核cpu环境下的性能,测试的时候不加也可以。

  4. 设置主从的replica:
    下面的操作都只需要在master上操作,登陆到master:

    Shell

    1 mongo--port30010



    在mongo终端下,初始化replica:

    Shell

    1 2 rsconf={_id:"rs0",members:[{_id:0,host:"127.0.0.1:30010",priority:1},{_id:1,host:"127.0.0.1:30020",priority:0,votes:0}]}
    rs.initiate(rsconf)



    priority设置为0,这个节点就永远不会自动变成primary,也就相当于是slave了,votes为0的情况下,可以设置更多的slave节点。

  5. 开启认证:
    这里和mongo2.4有区别,2.4需要先不用auth启动,添加admin库的用户后,再用auth启动才可以,2.6的直接刚开始就以auth启动,添加admin库的用户后,自动就开始启用auth了,还是在刚才的mongo终端下:

    Shell

    1 2 useadmin
    db.adddUser('admin','123456')



    会提示不建议使用createUser来代替addUser,不过我觉得addUser简单点,反正能用,就用以前的命令了。现在执行show dbs会发现,已经不能查看数据库了,提示要进行认证,使用db.auth(‘admin’,’123456′)后,show dbs就可以了,这说明auth已经自动打开了。

  6. 主从数据同步测试:
    在master上添加数据库,collection,还有一些记录进去,到slave上面去查看是否存在。
    PS:slave上面必须先执行re.slaveOK()才能查看slave的数据,这也算是区分master/slave的办法之一。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论