美文网首页
CentOS 7安装MongoDB与数据集

CentOS 7安装MongoDB与数据集

作者: _加加林_ | 来源:发表于2018-10-24 16:01 被阅读0次

    系统:CentOS 7.4
    MongoDB 3.4

    增加yum 源

    vi /etc/yum.repos.d/mongodb-org-3.4.repo
    

    复制以下内容:

    [mongodb-org-3.4]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
    

    安装:

    yum install -y mongodb-org
    

    启动方式

    CentOS 7以上的使用:

    #增加到系统启动:
    systemctl daemon-reload
    systemctl enable mongod
    #启动控制命令
    systemctl start mongod
    systemctl restart mongod
    systemctl stop mongod
    

    CentOS 6版本:

    sudo -i service mongod start
    sudo -i service mongod stop
    #增加到系统启动
    sudo chkconfig --add mongod
    

    mongodb的用户登录认证和基本使用

    连接:
    # mongo
    >use admin
    #增加管理员
    db.createUser(
      {
        user: "myuser",
        pwd: "yourpassword",
        roles: [ { role: "root", db: "admin" } ]
      }
    )
    
    #增加数据使用者
    db.createUser(
      {
        user: "nurmaluser",
        pwd: "youpassword",
        roles: [ { role: "readWriteAnyDatabase", db: "admin" } ]
      }
    )
    #测试是否成功
    use admin
    db.auth("username", "yourpassword")
    
    #成功返回1
    

    关于角色:

    PS:roles角色官网中分为built-in roles and user-defined 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

    启用连接验证:

    vi /etc/mongod.conf
    

    修改以下内容:

    security:
      authorization: enabled
    

    重启数据库。

    修改数据库目录:

    注:修改目录后,原来的用户验证需要重新设置,先关掉验证,再进去添加用户

    同样是/etc/mongod.conf文件

    storage:
      dbPath: /deploy/mydata
    

    对于这个目录,需要修改owner为 mongod:

    chown mongod:mongod /deploy/mydata
    

    连接数据库

    mongo mongodb://username:password@127.0.0.1:27017/main?authSource=admin
    

    修改alias方便连接:

    vim ~/.bashrs
    
    alias db='mongo mongodb://username:password@127.0.0.1:27017/main?authSource=admin'
    

    连接出现警告:

     ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
     **        We suggest setting it to 'never'
    
     ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
     **        We suggest setting it to ‘never'
    

    处理方法,先停掉mongo,然后:

    sudo echo "never" > /sys/kernel/mm/transparent_hugepage/enabled 
    sudo echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
    

    其它方式启动MongoDB

    例如需要使用集群,在同一台机增加多个节点,则不能用root启动。

    增加用户并添加到mongod组:

    useradd -G mongod muser
    

    然后切换用户:

    su -l muser
    

    启动方式:

    mongod --config <path-to-config>
    

    数据集:

    如果在单机,可以复制多个/etc/mongod.conf出来,修改其中的关键配置:

    /etc/mongod.conf

    net:
      port: 27017 #不同的.conf用不同的端口
    
    security:
      authorization: enabled  # 该字段非主集不用开启
      #数据集验证文件,把key复制给每个集,但一定要与集的启动用户的权限对应
      keyFile: "/deploy/mongo/mongo-key" 
    
    replication:
      replSetName: "rs0" #所有集用同一个名字
    

    配置集合:

    rs.initiate( {
       _id : "rs0",
       members: [
          { _id: 0, host: "127.0.0.1:27017" },
          { _id: 1, host: "127.0.0.1:27027" },
          { _id: 2, host: "127.0.0.1:27037" }
       ]
    })
    

    查看集合配置:

    rs.conf()
    

    确保集合正常:

    rs.status()
    
    

    字段解释:

    • self 这个信息出现在执行rs.status()函数的成员信息中
    • stateStr用户描述服务器状态的字符串。有SECONDARY,PRIMARY,RECOVERING等
    • uptime 从成员可到达一直到现在经历的时间,单位是秒。
    • optimeDate 每个成员oplog最后一次操作发生的时间,这个时间是心跳报上来的,因此可能会存在延迟
    • lastHeartbeat 当前服务器最后一次收到其他成员心跳的时间,如果网络故障等可能这个时间会大于2秒
    • pinMs 心跳从当前服务器达到某个成员所花费的平均时间
    • errmsg 成员在心跳请求中返回的状态信息,通过是一些状态信息,不全是错误信息。
      state和stateStr是重复的,都表示成员状态,只是state是内部的叫法。
      health 为1表示server正常,0表示server宕.
    • state 为1表明Primary,2表明secondary,3表示Recovering,7表示Arbiter,8表示Down.
    • optime与optimeDate表达的信息也是一样的,只是表示的方式不同,一个是用新纪元开始的毫秒数表示的,一个是用一种更容易阅读的方式表示。
    • syncingTo表示当前服务器从哪个节点在做同步。

    注:由于rs.status()是从执行命令成员本身的角度得出的,由于网路等故障,这份报告可能不准确或者有些过时。

    数据集文献:
    https://www.linode.com/docs/databases/mongodb/create-a-mongodb-replica-set/
    https://docs.mongodb.com/manual/tutorial/deploy-replica-set/

    相关文章

      网友评论

          本文标题:CentOS 7安装MongoDB与数据集

          本文链接:https://www.haomeiwen.com/subject/flhxtqtx.html