美文网首页
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