zoukankan      html  css  js  c++  java
  • MongoDB(四)——管理架构

             前面介绍MongoDB基础,在这里,我们推荐两个网站,我们可以看看,评论是相当具体:http://www.w3cschool.cc/mongodb/mongodb-tutorial.html。http://www.yiibai.com/mongodb/mongodb_create_backup.html#。好这篇文章来看一下MongoDB的数据管理,架构搭建。好。先来看张图:

     

     

           下边依照这张图进行一一介绍。

           一,管理篇,当然主要是对数据库的管理,包含我们最关心的数据。和管理这些数据的用户。

    不管非关系型还是关系型数据库。这一点都是很重要的。

     

           1,数据的导入导出:对于MongoDB的数据导入导出,用到的还是bin下的命令mongoexport(导出),mongoimport(导入)。

     

           mongoexport:默认导出的JSON格式的文件。

    进入dos命令窗体,在d:mongodbin的路径下,利用mongoexport命令,能够通过mongoexport -help进行帮助查询。语法:mongoexport -d mydatabase -c mycollection --port 端口  --cvs -f 要导出的列  -0  指定导出的路径名+文件名称

     

             mongoimport:和上边的使用方法基本一样,能够导入JSON格式数据,也能够导出cvs数据格式。

    mongoimport -h:指明数据库宿主机的IP -u:指明数据库的username -p:指明数据库的password -d:指明数据库的名字 -c:指明collection的名字 --type cvs --headerline(指名第一行是列名,无须要导入) --file要导入的文件

     

            导入导出很easy的,熟练使用这两个命令就可以。

     

            2,数据的备份和恢复:数据无价。随着当今大数据时代的到来,数据的是越来越加重要,保存好数据。就相当于保存了价值,所以数据库的备份和恢复工作也是很的重要,这里看一下Mongodb的备份和操作。

     

            备份:也是bin下的命令mongodump,相对来说较简单:

    參数说明:

    -h:指明数据库宿主机的IP

    -u:指明数据库的username

    -p:指明数据库的password

    -d:指明数据库的名字

    -c:指明collection的名字

    -o:指明到要导出的文件名称

    -q:指明导出数据的过滤条件

     

              恢复:bin下的命令mongorestore

              

    參数说明:

    -h:指明数据库宿主机的IP

    -u:指明数据库的username

    -p:指明数据库的password

    -d:指明数据库的名字

    -c:指明collection的名字

    -o:指明到要备份的文件名称

    -q:指明备份数据的过滤条件

     

            3,用户管理,mongodb里边的用户管理,他有两类用户。一个是超级管理员,一个每一个数据库的数据库管理员。默认情况下是没有权限认证的。仅仅有启用了安全性认证后。数据库认证的用户才干够进行读写操作。

    启动时指定 --auth即加入了权限认证。

              

           1.加入并验证用户,当中这是给本数据test加入用户,第三个參数为readOnly,true或false,表示是否为仅仅读。

    > use test

    > db.addUser("zjx","tsjianxin")

    > db.auth("zjx","tsjianxin")

            2.查看已存在的用户

    > db.system.users.find()

            3.删除用户

    > use dbname (admin or 51cv ,etc)

    > db.system.users.remove({user:"haha"})

    > db.system.users.find()

             

           给admin加入的用户为超级管理员,能够管理其他数据库,可是每一个数据库的登录验证必须从自己管理的数据库进行验证,超级管理必须通过admin进行管理。然后切换来管理其他数据库。

     

     

           二,架构篇,这里简单看一下分布式数据库的搭建,分为主从复制和副本集两个情况,简单来看一下。

     

           1,Master-Slave(主从)复制:MongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻仅仅有一台是用于写操作。也就是Master(主server),可是它能够把读操作分给其他的slave(从server)。这也就是主从,这样的情况,当主server宕掉以后,须要我们手动将一台从server改为主server,这也是这样的形式不好的地方。

     

           首先,须要我们安装两台MongoDBserver(当然也能够通过一台server。在不同的端口上)。然后主server启动的命令:mongod --master  --dbpa "存放数据库的路径" --logpath "存放日志的路径"  --port 端口号     这样我们的主server就算完毕了。

          从server启动命令: mongod --slave --source 主server的ip:主server的mongodb的端口号  --dbpa "存放数据库的路径" --logpath "存放日志的路径"  --port 端口号   这样的我们主server的从server也就启动好了,当然我们能够创建多个从server。然后我们能够在主server进行增删改操作,看从server上的数据会随着主server的变化而变化,这样就达到了,mongodb的主从分布。

     

            2,Replica Set(副本集)复制,这样的分布集群,主要添加了出现问题自己主动切换和自己主动修复成员节点。各个DB之间的数据全然一样。和主从最为显著的差别在于其没有固定的节点,它是整个集群选举出的一个主节点,当其共工作不正常时,其他节点强烈推荐使用。

     

             部署步骤:a,分别为每一个mongoDBserver创建data存储路径和log存储路径

                               b,分别创建主从key文件用于标识集群的私钥。里边存上同样的私钥。改为仅仅读形式的。

                               c,每一个server进行启动:mongod --replSet rs1(副本集名字,同样就可以)  --keyFile  key的路径  --port 端口号 --dbpath 数据库存放路径  --logpath 日志路径

     

                               d,配置初始化Replica Sets,也就是将这个集合进行配置:登录随意一台:config_rs1={_id:"rs1",members:[{_id:0,host:"server1IP:端口",priority:1(优先级)}。{id:1,host:"server2IP:端口",priority:2(优先级)}]}

     然后初始化配置:rs.initiate(config_rs1);    Ok就可以

     

            这样就弄好了,优先级数字越大。优先级越高。高的这一台将自己主动选为主server。能够进行增删改查。而其他的则是从server能够进行读。注意:rs.slaveOk();

     

            好。最后举一个样例。来理解一下这两种架构。

    主从复制好比小学班级,副本集复制好比大学班级。

    每一个班级都有一个班长。就是masterserver。其他学生是slaveserver。通过班长能够对班级事宜进行增删改查,而通过学生仅仅能对班级事宜进行了解查询。小学的班长请假了,须要我们老师再来指定一个班长,学生没有意识去推荐,而大学班级,则会由学生自行推荐,无须老师的介入。

     

              大,这会第一本,mongoDB在深入研究还有待大大,通过使用连续的深刻理解。不断熟悉,。连续蒸馏。

     

  • 相关阅读:
    形式化描述硬件系统
    形式化表述
    采样定理和采样率和采样电路和采样buf_size_frame_size
    Biology 042: Afterimage Effect
    Algo 33: DFS (Depth First Search in Graph)
    174 Python程序中的进程操作进程间通信(multiprocess.Queue)
    018 Django项目SECRET_KEY等敏感信息保存
    017 nodejs取参四种方法req.body,req.params,req.param,req.body
    173 Python程序中的进程操作进程同步(multiprocess.Lock)
    172 Python程序中的进程操作开启多进程(multiprocess.process)
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5044113.html
Copyright © 2011-2022 走看看