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

    原文地址:http://blog.51cto.com/13630803/2141989

    时间: 2024-07-31 09:13:24

    MongoDB操作命令详解及备份恢复、管理、监控【详细】的相关文章

    mysql二进制日志详解及备份恢复、基于mysqldump及lvmsnapshot做备份恢复详解

    二进制日志: 时间点恢复 复制 20140411 回顾: 日志文件:6类 一般查询日志:log, general_log, log_output 慢查询日志: 错误日志 二进制日志 中继日志 事务日志 二进制日志:"修改" position:位置 time: 时间 滚动: 1.大小 2.时间 二进制日志的功用: 即时点恢复: 复制: mysql> SHOW MASTER STATUS; mysql> FLUSH LOGS; mysql> SHOW BINARY LOG

    Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)【转】

    转自:http://blog.csdn.net/gatieme/article/details/51872659 版权声明:本文为博主原创文章 && 转载请著名出处 @ http://blog.csdn.net/gatieme 目录(?)[-] 前景回顾 1 Linux的调度器组成 2 调度工作 进程上下文 1 进程上下文的概念 2 上下文切换 context_switch进程上下文切换 1 context_switch完全注释 2 prepare_arch_switch切换前的准备工作

    详解CentOS配置和管理web服务-Apache

    详解CentOS配置和管理web服务-Apache 家住海边喜欢浪:zhang789.blog.51cto.com 目录 1.web介绍 2.web历史和工作原理 3.http请求流程 4.关于Apache 5.Apache服务器软件安装使用 6.符号链接和虚拟目录 7.页面重定向 8.Apache日志文件 9.Apache安全配置 10.虚拟主机 10.1.基于IP 10.2.基于域名 10.3.基于端口 web服务器配置和管理 http协议简介 http协议,全称HyperText Tran

    基本操作命令详解

    1.显示日期和时间的命令:date 2.显示日历的命令:cal cal 2009 cal 10 2009 3.计算器:bc 4.热键 [Tab]键是命令补全和文件补齐 [Ctrl]+c  中断目前程序 [Ctrl]+d 代表键盘输入结束,可替代exit 5.学会使用man page ,在线帮助文档 man page 的热键 搜寻热键十分的好用. 6.info page  比man page 更加容易阅读. 7.超简单的文本编辑器:nano 8.数据同步写入磁盘:sync 9.惯用关机命令:shu

    cocos2dx 启动过程详解二:内存管理和回调

    在上一篇的第二部分中,我们有一句代码待解释的: // Draw the Scene void CCDirector::drawScene(void) { -- //tick before glClear: issue #533 if (! m_bPaused) //暂停 { m_pScheduler->update(m_fDeltaTime);   //待会会解释这里的内容 } -- } 这里是一个update函数,经常会写像this->schedule(schedule_selector(X

    转:adb操作命令详解及大全

    说到 ADB 大家应该都不陌生,即 Android Debug Bridge,Android调试桥,身为 Android 开发的我们,熟练使用 ADB 命令将会大大提升我们的开发效率, ADB 的命令有很多,今天就来总结下我在开发常用到的一些 ADB 命令. 查看版本 ADB 的安装这里就不多说了,输入以下命令有如下提示就证明你环境ok,否则自行网上搜索解决下. $ adb version Android Debug Bridge version 1.0.36 Revision 8f855a3d

    ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对比

    ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间移动对象 3.可以在数据库之间移动对象 4.可以实现表空间转移 二.EXPDP的命令详解 C:\Users\Administrator>20:42:32.90>expdp help=y Export: Release 11.2.0.1.0 - Production on 星期六 10月 10 09

    MongoDB迁移方案-冷备份+增量备份恢复

    QQ群:465614686 1.  环境构建步骤 (1)线上环境 都是副本集模式 3个业务访问节点+1个隐藏节点 (隐藏节点做hadoop.spark数据同步使用以及数据报表查询等) (2)主机以及配置说明 10.21.18.21  primary节点    优先级为100 10.21.18.22  secondary节点  优先级为90 10.21.18.23  secondary节点  优先级为80 10.21.18.24  隐藏节点       优先级为0 系统配置:128G内存,64Co

    Linux下进程的创建过程分析(_do_fork/do_fork详解)--Linux进程的管理与调度(八)

    日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux-4.5 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度-之-进程的创建 参照 分析Linux内核创建一个新进程的过程 前言 Unix标准的复制进程的系统调用时fork(即分叉),但是Linux,BSD等操作系统并不止实现这一个,确切的说linux实现了三个,fork,vfork,clone(确切说vfork创造出来的是轻量级进程,也叫线程,是共享资源的进程)