• mongodb的使用


    1.启动mongodb      

    启动mongodb在Linux中可以进入mongodb的bin目录下执行      ./mongod -dbpath=所建立的数据文件夹  -logpath=所建立的日志文件

    然后mongod服务就会启动。

    -port可以指定这个mongod服务运行的端口  

    -fork可以指定该mongod在后台运行(服务进程)

    -config可以指定配置文件让mongod读取

    配置文件和命令行中的功能是完全一致的。例如

    port=22017

    fork=true

    logpath=mongodb.log

    只是将命令行中配置的内容放进文件中。

    启动完mongod之后在启动mongos     ./mongos --port xxxx --configdb localhost:xxxxx

    2.停止mongodb

    如果mongod在前台运行,直接ctrl+c就可以

    如果在后台运行,则先查出mongod的pid,然后kill掉即可

    3.查看mongodb的状态 

    可以利用mongostat来查看数据库状态,每秒刷新一次,列分别为inserts query update vsize conn等等数据

    4.安全和认证

    默认的用户是admin,拥有所有权限,可以通过

    use admin
    db.addUser({"root","abcd"}) //添加一个root用户
    db.addUser({"read_only","abcd","true"}) //添加一个read_only用户
    //第一个参数是用户名,第二个是密码,第三个是是否只读
    
    //给数据库建立用户后,启动mongod时 加入-auth 即可开启安全验证,此时要使用用户身份则需要输入
    db.auth({"username","password"})

    5.数据库备份

    将数据库安全关闭后,将所指定的dbpath下的文件夹复制,就能完成备份,比较简单。但是这是一种冷备份,必须关闭数据库才能进行

    安装目录下的mongodump是一种热备份的方法,

    ./mongodump -d test -o  backup
    //将test数据库备份到backup目录

    下面介绍一下mongodb数据库的复制和分片

    mongodb的复制

    1.主从复制

    建立一个主节点,多个从节点。在启动mongod时进行配置

    ./mongod -dbpath ~/dbs/master -port 10000 -master
    //指定了主节点
    ./mongod -dbpath ~/dbs/slave -port 10001 -slave -source localhost:10000
    //为之前的主节点配置了从节点

    2.副本集

    副本集是没有固定主节点的副本集合,会根据情况自动切换

    ./mongod -dbpath ~/dbs/chip1 -port 10001 -replSet localhost:10000

    将副本集建立完毕并启动后需要初始化副本集

    db.runCommand({"replSetInitiate":
       {
              "_id":"chips",
              "members":[
                       {  "_id":1,  "host":"localhost:10000" },
                       {  "_id":2,  "host":"localhost:10001" },
              ]
        } 
    
    })

    mongodb分片

    分片有些类似建立索引,根据一个列或多个列建立分片。数据库会根据服务器情况将数据存储到不同的服务器上。而用户在使用的过程中,mongos会自动调配不同服务器上的信息(从配置服务器处获得),从用户角度并不知道分片存在。

    使用mongodb分片主要分为了一下几个步骤

    1.启动一个mongod 端口定为10000

    2.启动mongos 并将mongod配置进去作为配置服务器   端口定位9000 ./mongos --port 9000 --configdb localhost:10000

    以上两步之前已经有描述不再赘述

    3.添加片

    添加片首先也是要启动一个mongod 端口定位20000

    然后启动mongo 连接mongos 

    ./mongo localhost:9000/admin
    //xxxx为mongos使用的端口,然后就可以通过addshared添加片了
    
    db.runCommand({addshard:"localhost:20000",allowLocal:true})
    
    //这样就把之前新建立的mongod添加进了端口的分片。一般来说不同的片是建立在不同的服务器上的,而本例中所有的分片都在一台主机上,所以需要添加allowLocal这一项配置
    
    //之后想要添加分片,和这个过程一致,只需要建立mongod然后运行addshard就可以了。

    4.切分数据

    例如我们使用的数据库名为test

    首先要开启分片功能

    db.runCommand({"enablesharding":"test"})

    对数据库分片后,内部的集合就会存储到不同的片上。然后我们使用shardcollection命令来对集合进行分片

    db.runCommand({"shardcollection":"test.goods","key":{"_id":1}})

    该命令对test数据库下的goods集合进行分片,片键为_id

    生产配置

    在实际使用中,我们需要多个配置服务器,多个mongos服务器,并且每个片都是副本集,这样才能更好的保证运行

    1.三个配置服务器

    应在不同的主机上

    首先启动三个mongod

    然后  ./mongos --port 10000  --configdb  ip1:port1,ip2:port2,ip3:port3   这样就将三个mongodb配置成了配置服务器

    2.mongos

    mongos数量不限,是访问数据库的接口,最好针对一个应用服务器之运行一个mongos进程

    3.片

    在生产环境中每个片应该都是副本集,要将副本集添加进片中,例子如下

    副本集chips 其中包含一个服务器 ip3:27017

    db.runCommand({"addshard":"chips/ip3:27017"})如果ip3的主机除了问题,mongos会自动寻找chips中的其他节点作为新的主节点。

    最后说一下删除分片的命令 db.runCommand({"removeshard":"ip:port"})

  • 相关阅读:
    解决maven update project 后项目jdk变成1.5的问题
    applicationContext-common.xml]; nested exception is java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
    SQL0668N 不允许对表"xxx"执行操作,原因码为 "1"
    maven下的jar项目打包的方法
    spring security 4.2后出现CouldnotverifytheprovidedCSRFtokenbecauseyoursessionwasnotfound
    maven-javadoc-plugin 出现错误Unsupported major.minor version 51.0
    通过 Spring Security配置 解决X-Frame-Options deny 造成的页面空白 iframe调用问题
    yaml模块
    centos 下 yum安装python3
    Python 之ConfigParser模块
  • 原文地址:https://www.cnblogs.com/mamuluke/p/5195856.html
Copyright © 2020-2023  润新知