zoukankan      html  css  js  c++  java
  • Mongodb 学习笔记6:管理以管理员角度来看mongodb

    启动和停止MongoDB

    1、从命令行启动:从mongod启动。前面已经介绍过了。通过mongod --help可以查看其它的配置。

    2、配置文件:通过-f 或者--config 指定配置文件。

    >mongod  --config ~/.mongodb.conf

    配置文件:

    #Start MongoDB as a daemon on port 5586

    port=5586

    fork=true

    logpath=mongodb.log

    3、停止mongodb:

    • 服务器作为前台进程运行早终端——ctrl-c
    • kill -2 10014(PID)、kill 10014
    • db.shutdownServer();

    监控

    • http监视器:其端口号比主端口号大1000;可以看到断言、锁、索引和复杂等相关信息。
    • serverStatus:

    输入以下命令:

    >db.serverStatus()

      这个函数可以获取到mongodb的服务器统计信息,其中包括 :全局锁,索引,用户操作行为等等这些统计信息,对管理员来说非常重要。

    • mongostat——输出一些serverStatus提供的重要信息。每秒钟输出新的一行。


    安全和认证——用户认证

    采用addUser添加用户,其中在admin数据库下添加的用户视为超级用户(即管理员)。

    在开启安全检查之前,一定要至少有一个管理员账号。没有开启安全检查之前,可以对所有数据库调用addUser。

    addUser不仅可以添加用户,还能修改用户口令和读写状态。

    重启服务器,加入--auth命令,开启安全检查。

    如下图:第一次连接的时候,不能对test数据库执行任何操作。

    test_user 不能使用show dbs ,只有管理员root认证之后,才能对所有数据库执行任意操作。

    认证原理:

    数据库的用户账号以文档的形式存在system.users集合中。文档结构如下:

    删除用户:


    备份和恢复

    • 直接复制

    在服务器运行的情况下直接copy是很有风险的,可能copy出来时,数据已经遭到破坏,唯一能保证的就是要暂时关闭下服务器,copy完后重开。

    •  mongodump和mongoretore

     这个是mongo给我们提供的内置工具,很好用,能保证在不关闭服务器的情况下copy数据。

    D盘建立一个backup文件夹用于存放test数据库。 

     

     

     mongorestore 恢复,它是不用关闭机器的。 drop选项,将test数据恢复之前先删除原有数据库里面的数据,可以通过help查看。

     

    •  主从复制(以后介绍)
    • fsync 和锁

    fsync命令强制服务器将所有缓存区写人磁盘,还可以通过上锁阻止对数据库的进一步写人,直到释放锁为止。

    fsync+ lock首先会把缓冲区数据暴力刷入硬盘,然后给数据库一个写入锁,其他实例的写入操作全部被阻塞,直到fsync

    +lock释放锁为止。

     加锁:    db.runCommand({"fsync":1,"lock":1})

     释放锁: db.$cmd.unlock.findOne()

    • 修复

    当机器出故障,又恰巧没有备份时,mongodb内置的数据修复功能会试着恢复损坏的数据文件。

    未能正常停止mongodb应修复数据库。

    >mongod --repair

    其过程很简单:将所有文档导出然后马上导入,忽略无效文档。完成之后,重建新的索引。

    修复运行中的服务器上的数据库,要在shell中用repairDatabase。

    >db.repairDatabase()

     

                       

  • 相关阅读:
    26 转义符 re模块 方法 random模块 collection模块的Counter方法
    25 正则表达式
    24 from 模块 import 名字
    24 from 模块 import 名字
    24 from 模块 import 名字
    23 析构方法 items系列 hash方法 eq方法
    21 isinstance issubclass 反射 _str_ _new_ _len_ _call_
    20 属性, 类方法, 静态方法. python2与python3的区别.
    python(1)
    python之字符串格式化
  • 原文地址:https://www.cnblogs.com/lucyawei/p/3054979.html
Copyright © 2011-2022 走看看