zoukankan      html  css  js  c++  java
  • mongodb3.2.3 复制集安装步骤


    mongodb 复制集 测试

    node1: 172.18.20.161 47000 (主)
    node2: 172.18.20.162 47000 (副)
    node3: 172.18.20.163 47000 (副)
    node4: 172.18.20.164 47000 (投票)

    解压mongodb包,并移到相应用目录。

    配置文件:
    dbpath = /home/oyabc/mongodb/data/ # 指定数据库路径
    logpath = /home/oyabc/mongodb/logs/logs.log # 日志路径
    logappend = true # 以追加的方式写日志
    port = 47000 # 指定端口号,默认47018
    fork = true # 以子进程方式运行
    quiet = true # disables all but the most critical entries in output/log file.
    #auth = true # 增加验证选项
    #bind_ip = 127.0.0.1,172.18.12.2,172.18.12.3
    #keyFile= /home/oyabc/mongodb/keyFile
    directoryperdb = true # 每个db 存放在单独的目录中
    wiredTigerDirectoryForIndexes = true
    maxConns = 1000000
    nohttpinterface = true
    rest = false
    profile=1
    slowms=1000
    storageEngine=wiredTiger
    ###Replication Options
    replSet = im1
    oplogSize = 4096

    auth keyFile 配置完成后在加权限

    启动:
    /home/oyabc/mongodb/mongodb323/bin/mongod -f /home/oyabc/mongodb/conf/mongodb.conf


    在PRIMARY上登陆并设置权限:
    /home/oyabc/mongodb/mongodb323/bin/mongo --port 47000

    cfg={ _id:"im1",
    members:[
    {_id:0,host:'172.18.20.161:47000',priority:2},
    {_id:1,host:'172.18.20.162:47000',priority:1},
    {_id:2,host:'172.18.20.163:47000',priority:1},
    {_id:3,host:'172.18.20.164:47000',arbiterOnly:true}
    ]
    };

    > rs.initiate(cfg)

    检查状态:
    rs.status();

    设置权限
    use admin

    1. 创建管理员账号(全局账号) 
    use admin //管理员账号只能在admin账户下创建 
    db.createUser({user:'admin',pwd:'admin',roles:['userAdminAnyDatabase','dbAdminAnyDatabase', 'readAnyDatabase','readWriteAnyDatabase']});  
    2. 创建数据库账号 
    use api //创建数据库 
    db.createUser({user:'api',pwd:'api',roles:[{role:'dbOwner',db:'api'}]}) 

    以上只在 PRIMARY 上操作, 用户,数据等会同步到其他副本上。


    所有mongodb重启。

    /home/oyabc/mongodb/mongodb323/bin/mongo --port 47000
    use admin
    db.auth('admin', 'admin'); // 认证

    当副本不可用时可以设置 rs.slaveOk();

    =======================================

    停止服务:
    use admin
    db.shutdownServer();

    给用户授权:
    db.grantRolesToUser( "admin" , [ { role: "dbOwner", db: "test" } ]) ;

    db.grantRolesToUser( "admin" , ['userAdminAnyDatabase','dbAdminAnyDatabase']) ;
    db.grantRolesToUser( "admin" , ['readAnyDatabase','readWriteAnyDatabase']) ;


    创建用户:
    db.createUser(user, writeConcern)
    user这个文档创建关于用户的身份认证和访问信息;
    writeConcern这个文档描述保证MongoDB提供写操作的成功报告。

    · user文档,定义了用户的以下形式:
    { user: "<name>",
    pwd: "<cleartext password>",
    customData: { <any information> },
    roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
    ]
    }

    user文档字段介绍:
    user字段,为新用户的名字;
    pwd字段,用户的密码;
    cusomData字段,为任意内容,例如可以为用户全名介绍;
    roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色;
    在roles字段,可以指定内置角色和用户定义的角色。

    Built-In Roles(内置角色):
    1. 数据库用户角色:read、readWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超级用户角色:root
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 内部角色:__system
    PS:关于每个角色所拥有的操作权限可以点击上面的内置角色链接查看详情。

    Database User Roles 普通用户角色 
    read 
    readWrite  
    Database Administration Roles管理员角色 
    dbAdmin可以管理数据库 
    dbOwner单数据库最大权限,dbAdmin,userAdmin 
    userAdmin可管理当前数据库用户  
    Cluster Administration Roles管理员角色 
    clusterAdmin 
    clusterManager 
    clusterMonitor 
    hostManager  
    Backup and Restoration Roles 备份和恢复角色 
    backup 
    restore  
    All-Database Roles 所有数据库角色 
    readAnyDatabase在admin下建立,可以读取所有数据库的信息 
    readWriteAnyDatabase在admin下建立,可以读写所有数据库的信息 
    userAdminAnyDatabase在admin下建立,可以管理所有数据库的用户 
    dbAdminAnyDatabase在admin下建立,可以管理所有数据库的信息(类似于所有数据库的dbAdmin账户)

    · writeConcern文档(官方说明)
    w选项:允许的值分别是 1、0、大于1的值、"majority"、<tag set>;
    j选项:确保mongod实例写数据到磁盘上的journal(日志),这可以确保mongd以外关闭不会丢失数据。设置true启用。
    wtimeout:指定一个时间限制,以毫秒为单位。wtimeout只适用于w值大于1。

    例如:在products数据库创建用户accountAdmin01,并给该用户admin数据库上clusterAdmin和readAnyDatabase的角色,products数据库上readWrite角色。
    use products
    db.createUser( { "user" : "accountAdmin01",
    "pwd": "cleartext password",
    "customData" : { employeeId: 12345 },
    "roles" : [ { role: "clusterAdmin", db: "admin" },
    { role: "readAnyDatabase", db: "admin" },
    "readWrite"
    ] },
    { w: "majority" , wtimeout: 5000 } )

    验证:
    mongo -u accountAdmin01 -p yourpassward --authenticationDatabase products

  • 相关阅读:
    [Android Pro] 超能RecyclerView组件使用
    [Android Pro] UI设计师不可不知的安卓屏幕知识
    [Android Pro] Android Support 包里究竟有什么
    [Android Pro] fragment中嵌套viewpager,vierpager中有多个fragment,不显示
    [Android Pro] 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHidden|orientation" 不起作用
    [Android Pro] sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别
    [Android Pro] AndroidStudio导出jar包
    [Java] Java 打包成jar包 和 解压jar包
    [Android Pro] 通过IMSI判断手机是移动、联通、电信
    [MACOS] Mac上的抓包工具Charles
  • 原文地址:https://www.cnblogs.com/hujihon/p/5218192.html
Copyright © 2011-2022 走看看