MongoDB操作命令详解及备份恢复管理监控详细

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB操作命令详解及备份恢复管理监控详细相关的知识,希望对你有一定的参考价值。

  • MongDB简介
    MongDB是一款跨平台,面向文档的数据库,可以实现高性能,高可用性,并且能够轻松扩展,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。不再有行的概念,其运行方式主要基于两个概念:集合(collection)、与文档(document)。
  • 它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

面向集合存储,易存储对象类型的数据。
模式自由、支持查询、支持动态查询。
支持完全索引,包含内部对象。
支持复制和故障恢复。
使用高效的二进制数据存储,包括大型对象(如视频等)。
自动处理碎片,以支持云计算层次的扩展性。
支持RUBY,PYTHON,JAVA,C++,php,C#等多种语言。
文件存储格式为BSON(一种JSON的扩展)。
可通过网络访问。

  • 安装配置

  • 创建yum源

    # vim /etc/yum.repos.d/mongodb-org.repo

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

    # yum  install -y mongodb-org   //安装MongDB
    # vi /etc/mongod.conf
        bindIp: 0.0.0.0             #监听地址
        port: 27017                 #监听端口
    # systemctl start mongod.service
    # netstat -anpt | grep 27017
  • 启动MongoDB多实例

    # cp -p /etc/mongod.conf /etc/mongod2.conf
    # vim /etc/mongod2.conf  //修改下面
         path: /data/mongodb/mongod2.log    //日志文件目录
         dbPath: /data/mongodb/mongo         //数据存储目录
         port: 27018                          //服务器端口
  • 创建实例的目录和日志文件

    # mkdir -p  /data/mongodb/
    # cd /data/mongodb/
    # mkdir mongo
    # touch mongod2.log
    # chmod 777 mongod2.log
  • 启动实例

    # mongod -f /etc/mongod2.conf    
    # mongo --port 27018    //指定实例的端口
    # netstat -ntap
  • Mongodb的基础操作
  • 文档 : 相当于关系数据库的 行 (多个文档组成集合)
  • 集合 : 相当于关系数据库的 表 (多个集合组成数据库)
  • 有些数据库名是保留的具有特殊作用
    1):admin: 将用户添加到这个库,这个用户继承数据库所有权限
    2): local : 这个库永远不被复制,可以存储限于本地单台服务器的任意集合
    3):config : 当Mongo用于分片设置时,这个库在内部使用,保存分片的相关信息

    # mongo   //进入数据库
    > db.version()     //查看版本
    > show dbs;        // 查看数据库
    > db.getMongo() //查看当前数据库机器的连接地址
    > db.集合名.help   //显示集合操作命令
    > show users  //显示用户
  • 增删改查

    >  use school;   //打开school数据库, 不存在会创建,不建立集合又会删除
    > db.createCollection(‘info‘)              //创建集合
    > db.info.insert({"id":1,"name":"zhangsan","hobby":["game","talk"]})      //添加数据
    > db.info.find()                 //查看info集合中所有文档
    > show collections           //查看数据库中所有集合
    > db.info.update({"id":10},{$set:{"name":"tom"}})     //更改数据
    > db.info.remove({"id":2})          //移除info集合中的id2的数据
    > db.info.drop()    //删除info集合
    > db.dropDatabase()    //删除数据库  先use到要删的数据库里在删
    > db.info.count()      //统计有多少条数据
    • MongoDB数据类型

      String: 字符串,最常用,必须是utf-8
      Boolean:布尔值,true 或者false
      Integer:整数
      Double:浮点数
      Arrays:数组或者列表,多个值存储到一个键
      Object:用于嵌入文档,即一个值为一个文档
      Null:存储null值
      Binary Data : 二进制数据,用于存储二进制数据
      Date:存储当前日期或时间unix时间格式

  • 查看数据类型

    > a=db.info.findOne({"id":1})    //查找指定记录并赋予别名a
    > typeof(a.id)   //查看属性类型
  • 备份与恢复管理
  • 导入导出
  • 导出:mongoexport
  • 导入:mongoimport
  • 选项: -d 数据库 -c 集合 -o 目录文件.json结尾 -q 导出数据过滤条件 -f 导出哪些列

    # for(var i=1;i<=100;i++)db.info.insert({"id":i,"name":"jack"+i})    //循环写入100条数据
    # mongoexport -d school -c info -o /opt/info.json   //导出
    # mongoimport -d school -c info1 --file /opt/info.json  //导入到info1集合
    # mongoexport -d school -c info1 -q ‘{"id":{"$eq":10}}‘ -o /opt/top10.json    //条件导出指定第10行
  • 备份与恢复
  • 备份:mongodump
  • 恢复:mongorestore
  • 选项:
    1): -h 指定Mongodb所在服务器的地址也可以指定端口(例:-h 127.0.0.1:27017)
    2): -d :需要备份的数据库
    3): -o :备份数据存放的目录 该目录需提前创建

    # mkdir /backup   //创建存放目录
    # mongodump -d school -o /backup/       //备份school数据库
    # mongorestore -d school1 --dir=/backup/school    //恢复到school1数据库
  • 复制数据库

    > db.copyDatabase("school","school2")     //复制数据库school 到school2中
  • 克隆数据库
  • 把数据库school的info集合 克隆到实例2
  • 先进入实例2的MongoDB

    # mongo --port 27018
    # db.runCommand({"cloneCollection":"school.info","from":"192.168.126.130:27017"}) 
  • 安全管理
  • 创建管理用户
  • 启动是必须指定 auth=true
  • 可以将用户分配角色
  • 内置数据库用户角色: read 、 readWrite
  • 数据库管理员角色: dbAmin 、 dbOwner 、 userAdmin
  • 超级用户角色 : root

    # vi /etc/mongod.conf
        auth=true   //添加
    # mongo
    > use admin
    > db.createUser({"zkc":"root","pwd":"123","roles":["root"]})
    //创建用户zkc  密码123  分配到root角色
    > db.auth("root","123")     //验证用户
  • 进程管理
  • 查看当前正在运行的进程: db.currentOp()
  • 终止正在运行的进程: db.killOp(opid值)

    > db.currentOp()       //查看

    ......
    "opid" : 4872,

    db.killOp(4872) //终止4872进程

  • MongoDB监控
  • MongoDB提供一些内置工具可以监测数据库的状态信息
  • 查看数据库实例的状态信息: db.serverStatus()
  • 查看数据库的统计信息: db.stats()
  • 此外也可以通过web界面查看系统监控信息需要在配置文件中加入

    vim /etc/mongod.conf

       httpinterface=true
  • 然后浏览器访问: http://localhost:28017

以上是关于MongoDB操作命令详解及备份恢复管理监控详细的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB-服务器管理

mongoDB (mongoose增删改查聚合索引连接备份与恢复监控等等)

MongoDB

[第16期] mongoDB 干货笔记(mongoose/增删改查/聚合/索引/连接/备份与恢复/监控等)

MongoDB基本操作备份还原及用户管理

MongoDB阅读目录