管理

  备份与恢复

    数据文件备份

      数据库最容易的备份方式是通过复制数据目录文件下的全部内容到指定的位置,启动新的mongo实例并将数据路径指向复制路径即可。但是在复制数据时为了保持数据的一直行为,需要停机复制。

    mongodump与mongorestore

      数据库备份:mongodump  -out  path

        会将data目录下的全部信息备份到bin目录下的dump文件中,但是在备份时,需要将dump下的内容全部删除。如果不删除dump下的原有文件,在备份时遇到相同文件名的文件会替换掉。

      备份单一数据库:mongodump -d database  -out  path

      备份单一集合:mongodump -d database -c collection  -out  path

      数据库恢复:mongorestore -drop  path

        在运行该命令时,需要将mongo服务启动,否则无法执行。并且在执行时,需要加上drop参数,不然会在恢复数据时,将数据追加到数据库中。

      恢复单一数据库:mongodrestore -d database  -drop  path

      恢复单一集合:mongodrestore -d database -c collection  -drop  path

    分片集群的备份

      分片集群上的数据备份也就是对多个复制集进行备份,操作步骤如同副本集,但是需要对多个分片上的数据进行备份。备份步骤如下:

      1、禁用平衡器,保证balancer服务不能进行数据块的均衡。命令为sh.stopBalancer()

      2、停掉每个分片上的一个辅助副本或者配置服务器副本集的一个成员作为备份目标,这样可以保证整个集群可以正常工作。

      3、在备份结束后,重启停掉的复制集成员,他们会进行增量同步主节点上的数据保证数据一致。

      4、重启分片集群的平衡器。use config;sh.startBalancer()

    导入与导出

     mongoexport

     运行mongod服务:mongoexport -d database -c collection -f _id,name --out  path

     没有运行mongod服务:mongoexport -d database -c collection -f _id,name  --dbpath  dbpath --out  path

     mongoimport

     运行mongod服务:mongoimport -d database -c collection  --file  path

     没有运行mongod服务:mongoimport --port port --dbpath path -d database -c collection --file path

监控

  mongostats

   mongostats  --port port

   

   

    insert/s : 官方解释是每秒插入数据库的对象数量,如果是slave,则数值前有*,则表示复制集操作
    query/s : 每秒的查询操作次数
    update/s : 每秒的更新操作次数
    delete/s : 每秒的删除操作次数
    getmore/s: 每秒查询cursor(游标)时的getmore操作数
    command: 每秒执行的命令数,在主从系统中会显示两个值(例如 3|0),分表代表 本地|复制 命令
    netIn:MongoDB实例的网络进流量
    netOut:MongoDB实例的网络出流量
    注:此两项字段表名网络带宽压力,一般情况下,不会成为瓶颈
    conn: 打开连接的总数,是qr,qw,ar,aw的总和

  数据库命令db.serverStutus()

    该命令会返回这个mongo的运行情况,主要包括:锁、内存、缺页错误和连接数。

    

    内存:

      mem.resident参数表示当前被使用的物理内存总量,单位MB,如果超过系统内存量,说明还有大量的数据文件在磁盘上,说明内存太小,正常情况下此值往往会增长.。mem.mapped表示数据库使用的映射内存数量,单位MB. 由于MongoDB使用的是内存映射文件,因此其值 大致上等同于数据库的总大小.。mem.virtual值表示当前mongod进程消耗的虚拟内存总量,单位MB. 在启用了journaling时, 此值至少是mapped值的两倍.如果virtual值明显高于mapped值 (如,是其3倍或更高),则表示存在内存泄露。mem.mappedWithJournal表示数据库使用的映射内存,同时也包含日志消耗内存的总量,单位MB.此值通常是mapped值的两倍. 只在启用了日志时,才会包含此字段。

    缺页错误:

      参数extra_info.page_faults表示缺页数,如果数据不在内存,就会产生缺页错误。

    连接数:

      参数connections.current为当前mongo数据库的连接数,connections.available为当前可用的连接数,一旦可用连接数为0,说明数据库的服务已经达到瓶颈。

  数据库命令db.stat()

    数据具体数据库的基本信息:db.status()

    

    主要保存具体数据库的集合数多少,集合大小、索引数,索引大小等。