yaomint 发表于 2018-10-24 12:40:47

Centos7下安装mongodb

  MongoDB由C++语言编写,是一个基于分布式文件存储的数据库,目的在于为web应用提供可扩展的高性能数据存储解决方案。它是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bjson(键为字符串类型,用于唯一表示一个文档;值可以是各种复杂的文件类型。这种存储形式称为bjson)格式,可以存储比较复杂的数据类型。
  它最大的特点:面向集合存储(数据被分组存储在数据集中,称为集合,每个集合都有一个唯一的标识名,可以包含无限数目的文档),模式自由(对于存储在mongodb中的文件,不需要知道它的结构定义)
  关系数据库与Mongodb的对比
  传统的关系数据库一般由数据库(Database)、表(Table)、记录(Record)三层组成;而Mongodb是由数据库(Database)、集合(Collection)、文档对象(Document)三层组成。
  一、安装Mongodb
  1.下载Mongodb
  cd /usr/local/src
  curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.4.tgz
  2.首先创建用户并解压
  useradd mgdb
  tar -zxvf mongodb-linux-x86_64-3.6.4.tgz -C /home/mgdb
  vim /etc/profile
  export PATH=/home/mgdb/mongodb/bin:$PATH
  chown -R mgdb.mgdb mongodb
  3.修改配置文件
  vim /etc/mongod.conf
  ###日志存储位置
  systemLog:
  destination: file
  path: /home/mgdb/mongodb/mongod.log
  logAppend: true
  storage:
  ##journal配置
  journal:
  enabled: false //生产环境建议开启,以保持数据一致性
  ##数据文件存储位置
  dbPath: /home/mgdb/mongodb/data/db
  ##是否一个库一个文件夹
  directoryPerDB: true
  ##数据引擎
  engine: wiredTiger
  ##WT引擎配置
  wiredTiger:
  engineConfig:
  ##WT最大使用cache(根据服务器实际情况调节4~8)
  #cacheSizeGB: 4
  ##是否将索引也按数据库名单独存储
  directoryForIndexes: true
  ##表压缩配置,数据压缩算法,可选值“none”、“snappy”、“zlib”
  collectionConfig:
  blockCompressor: none
  ##索引配置
  indexConfig:
  prefixCompression: true
  ##使mongo进程成为系统集成(父id为1)
  processManagement:
  fork: true
  pidFilePath: /home/mgdb/mgdbpid/mongod.pid
  ##端口配置,将默认端口设为10689(默认为27017)
  net:
  port: 10689
  bindIp: xxx.xxx.xxx.xxx
  # maxIncomingConnections: 65536
  wireObjectCheck: true
  ipv6: false
  #security:
  #keyFile: /data/mongokey
  #authorization: enabled
  # enableLocalhostAuthBypass: true
  5.修改内核参数
echo never > /sys/kernel/mm/transparent_hugepage/enabled  echo never > /sys/kernel/mm/transparent_hugepage/defrag
  vim /etc/security/limits.conf //加入
mongod soft nofile 64000mongod hard nofile 64000mongod soft nproc 32000  mongod hard nproc 32000
  6.准备启动mongodb
  建立一个进程文件夹
  su - mgdb
  mkdir mgdbpid
  mongod -f /etc/mondod.conf
  此时可以查看日志,看是否启动成功。
  二、mongodb使用
  1.连接
  命令行连接
  mongo xxx.xxx.xxx.xxx:10689
  Mongodb安全认证
  创建管理员用户
  use admin
  db.createUser({user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
  退出并修改配置文件,将里边的security注释取消,并重新启动
  此时再这样mongo xxx.xxx.xxx.xxx:10689就连接不上了,需要采用以下命令连接
  mongo -uadmin -p --host xxx.xxx.xxx.xxx --port 10689 --authenticationDatabase "admin"
  2.创建用户
  #创建管理员用户
  use admin
  db.createUser({user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
  #创建普通用户
  db.createUser({user:"tester",pwd:"123456",roles:[{role:"readWrite",db:"test"}]})
  #查看用户
  db.system.users.find()//列出所有用户,需要切换到admin库下(use admin)
  show users//查看当前库下所有的用户
  #删除用户,需要切换到admin库
  db.dropUser('admin')
  具体用户角色详见http://bbs.51cto.com/thread-1146654-1.html
  #修改用户密码
  db.changeUserPassword('username','password')
  3.数据库管理
  #查看版本
  db.version()
  #显示当前的库   db
  # 切换/创建库
  use userdb//如果库存在就切换,不存在就创建
  #此时show dbs 看不到userdb,需要我们创建一个集合
  db.createCollection('clo1')
  再show dbs就有userdb了。
  #查看所有数据库
  show dbs(此命令要授权db.auth("admin","123456"))
  #删除数据库 mydb
  use mydb//先切换到该库下,然后再删除
  db.dropDatabase()
  4.数据管理
  创建集合

  db.createCollection("mycol", { capped : true, autoIndexID : true,>  语法:db.createCollection(name,options)
  name就是集合的名字,options可选,用来配置集合的参数,参数如下
  capped true/false (可选)如果为true,则启用封顶集合。封顶集合是固定大小的集合,会自动覆盖最早的条目,当它达到其最大大小。如果指定true,则需要也指定尺寸参数。
  autoindexIDtrue/false (可选)如果为true,自动创建索引_id字段的默认值是false。
  size (可选)指定最大大小字节封顶集合。如果封顶如果是 true,那么你还需要指定这个字段。单位B
  max (可选)指定封顶集合允许在文件的最大数量。
  查看集合
  show collections
  在集合中添加文档
  db.Account.insert({AccountID:2,UserName:"123",password:"123456"})//如果集合不存在,直接插入数据,则mongodb会自动创建集合
  修改
  db.Account.update({AccountID:2},{"$set":{"Age":20}})
  查看
  db.Account.find()   //查看所有文档
  db.Account.find({AccountID:2})   //根据条件查询
  删除
  db.Account.remove({AccountID:2})//根据条件删除
  要删除整个文档
  db.Account.drop()
  查看集合的状态
  use dbname//先进入对应的库,然后查看集合状态
  db.printCollectionStats()
  5)数据库性能
  db.stats()//查看当前库的信息
  db.serverStatus()   //查看mongodb服务器的状态
  三、将MongoDB设为开机启动
  在CentOS 7下使用systemctl服务管理方式配置MongoDB的启动:
  CentOS 7的服务systemctl脚本存放在/usr/lib/systemd/,MongoDB需要开机不登陆就能运行,就要存在系统服务/usr/lib/systemd/system目录下。
  每一个服务以.service结尾,如mongod.service。内容分为3部分:、和
  ?
1234567891011121314151617Description=MongoDB database serverAfter=network.targetAfter=syslog.target #Type=forking #一次性启动,mongod的后台保持由mongod自己的配置文件中定义Type=oneshotUser=dp#PIDFile=/home/dp/data/mongodb/pidExecStart=/usr/bin/numactl --interleave=all /home/dp/bin/mongod -f /home/dp/data/mongodb/config/mongod.conf#ExecReload=#ExecStop=PrivateTmp=true WantedBy=multi-user.target  注:MongoDB建议关闭NUMA功能,用 numactl --interleave=all 方式启动 mongod 进程
  脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下,这时就可以利用systemctl进行配置:

[*]  重新加载配置文件用systemctl daemon-reload
[*]  用systemctl start mongod可测试服务是否可以成功运行
[*]  如果不能运行则可以使用systemctl status mongod查看错误信息和其他服务信息。
  如果无法启动MongoDB,可检查日志/home/dp/data/mongodb/log/mongod.log,如果是由于如下错误:
  WiredTiger error (13) , file:WiredTiger.wt, connection: /home/dp/data/db/WiredTiger.turtle: handle-open: open: Permission denied
  可能是由于WiredTiger.turtle的权限不足,或所有者不是dp用户,可以用chmod、chown、chgrp命令修改该文件的属性。
  使用systemctl enable mongod就可以将所编写的服务添加至开机启动。
  

页: [1]
查看完整版本: Centos7下安装mongodb