zoukankan      html  css  js  c++  java
  • debian 8.2 + apt-get + mongodb 3.2 + replica set

    安装debian 8.2

    安装 mongodb 3.2

    192.168.0.100 debian1
    192.168.0.101 debian2

    可以参考博客安装。

    配置 replica set

    修改/etc/mongod.conf

    两台机器均修改 /etc/mongod.conf ,添加副本集信息

    # vi /etc/mongod.conf
    
    # mongod.conf
    # for documentation of all options, see:
    #   http://docs.mongodb.org/manual/reference/configuration-options/
    
    systemLog:
        destination: file
        path: /var/log/mongodb/mongod.log
        logAppend: true
        logRotate: reopen
    storage:
        ##journal配置
        journal:
            enabled: true
        ##数据文件存储位置
        dbPath: /var/lib/mongodb
        ##是否一个库一个文件夹
        directoryPerDB: true
        ##数据引擎
        engine: wiredTiger
        ##WT引擎配置
        wiredTiger:
            engineConfig:
                ##WT最大使用cache(根据服务器实际情况调节,4G的独享服务器,设置为2G)
                cacheSizeGB: 2
                ##是否将索引也按数据库名单独存储
                directoryForIndexes: true
            ##表压缩配置(数据量不是很大,使用snappy减少资源占用)
            collectionConfig:
                blockCompressor: snappy
            ##索引配置
            indexConfig:
                prefixCompression: true
    ##端口配置
    net:
        port: 27017
        bindIp: 0.0.0.0
    ##复制集配置
    replication:
        ##oplog大小
        oplogSizeMB: 10240
        ##复制集名称
        replSetName: pybrep
    
    ##安全认证
    security:
        authorization: enabled
        keyFile: /var/lib/mongodb/mongoDB_keyfile
    

    拷贝文件

    192.168.0.100 /var/lib/mongodb/ 下的文件(mongod 停掉)全部拷贝到0 .101

    # scp ./* pyb@192.168.56.101:/var/lib/mongodb/    

    启动mongod

    两个节点依次启动mongodb

    #service mongod start

    初始化一个Replica Set

    # mongo 
    use admin
    db.auth("pyb", "rootroot" )

    创建一个副本集配置对象:

    cfg={"_id" : "pybrep","members" : [{"_id" : 0,"host" : "192.168.56.100:27017"}]}

    使用用rs.initiate()进程初始化:

    rs.initiate(cfg)

    添加成员

    使用rs.add()添加mongod到副本集当中:

    pybrep:PRIMARY> rs.add("192.168.56.101:27017")

    可以通过 rs.help() 查看更多信息

    pybrep:PRIMARY> rs.help();

    验证replica set

    登录 PRIMARY 写入数据

    root@debian1:~# mongo
    pybrep:PRIMARY> use admin
    pybrep:PRIMARY> db.auth("pyb","rootroot");
    pybrep:PRIMARY> show dbs;
    pybrep:PRIMARY> use pybdb
    switched to db pybdb
    pybrep:PRIMARY> db
    pybdb
    pybrep:PRIMARY> db.test1.insert({"name":"yiibai tutorials"});
    WriteResult({ "nInserted" : 1 })
    pybrep:PRIMARY> show dbs
    admin  0.000GB
    local  0.000GB
    pybdb  0.000GB

    登录 SECONDARY 查询数据

    root@debian2:~# mongo
    pybrep:SECONDARY> use admin
    pybrep:SECONDARY> db.auth("pyb","rootroot");
    pybrep:SECONDARY> show dbs
    2017-08-09T13:11:10.077+0800 E QUERY    [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } :

    提示 not master and slaveOk=false

    在报错节点 192.168.0.101 执行 rs.slaveOk();

    或者在mongodb 连接串里指定 readPreference=secondaryPreferred

    参考:
    http://www.blogdaren.com/post-2158.html
    http://www.cnblogs.com/heiing/archive/2012/08/04/2622953.html

  • 相关阅读:
    知识点拾遗——装饰器
    知识点拾遗——函数部分
    re模块和分组
    re模块进阶
    面向对象总结
    模块总结整理
    项目目录结构
    日志(模块logging)
    位、字节、字符 概念
    socketserver实现并发通讯
  • 原文地址:https://www.cnblogs.com/ctypyb2002/p/9793102.html
Copyright © 2011-2022 走看看