美文网首页
【mongoDB】mongoDB保留数据库

【mongoDB】mongoDB保留数据库

作者: Bogon | 来源:发表于2021-11-18 00:06 被阅读0次

    在 MongoDB中,安装好了之后,数据库中默认就有四个数据库,分别为:admin、config、local 和 test。

    test库是一个默认的数据库,除了test库外admin、config、local库为系统库。

    admin库主要存储MongoDB的用户、角色等信息,config库主要存储分片集群基础信息,local库主要存储副本集的元数据。

    MongoDB副本集默认会创建local、admin数据库,local数据库主要存储副本集的元数据,admin数据库则主要存储MongoDB的用户、角色等信息。

    local数据库

    local数据库,从名字可以看出,它只会在本地存储数据,即local数据库里的内容不会同步到副本集里其他节点上去;

    目前local数据库主要存储副本集的配置信息、oplog信息,这些信息是每个Mongod进程独有的,不需要同步到副本集种其他节点。

    在使用MongoDB时,重要的数据千万不要存储在local数据库中,否则当一个节点故障时,存储在local里的数据就会丢失。

    另外,对于重要的数据,除了不能存储在local数据库,还要注意MongoDB默认的WriteConcern是{w: 1},即数据写到Primary上(不保证journal已经写成功)就向客户端确认,这时同样存在丢数据的风险。

    对于重要的数据,可以设置更高级别的如{w: "majority"}来保证数据写到大多数节点后再向客户端确认,当然这对写入的性能会造成一定的影响。

    $  mongo "mongodb://${user}:${passwd}@xx.xx.xx.xx:27017,xx.xx.xx.xx:27017,xx.xx.xx.xx:27017/?replicaSet=${instance_name}&authSource=admin"

    > use local

    > show tables;

    local库容量大于业务库,说明数据库中更新、删除操作较多

    Oplog 是一个capped collection。

    capped collection:一个固定大小的集合, 当集合大小达到最大值时, 老的内容会被新的自动覆盖。

    oplog正是一种特殊的capped collection, 用于记录mongodb的全部操作. 对于一个复制集来说, 所有的写操作作用于主节点(primary), 而oplog记录这些操作,secondary member同步读取oplog并应用其上的改变来做到与主节点同步。

    在64位的Linux, Solaris, FreeBSD, and Windows 系统中,Mongodb默认将其大小设置为可用disk空间的5%(默认最小为1G,最大为50G),也可以在mongoDB复制集实例初始化之前将mongo.conf中oplogSize设置为我们需要的值。

    admin数据库

    当Mongod启用auth选项时,用户需要创建数据库帐号,访问时根据帐号信息来鉴权,而数据库帐号信息就存储在admin数据库下。


    system.version存储authSchema的版本信息

    system.users存储了数据库帐号信息

    如果用户创建了自定义的角色,还会有system.roles集合

    用户可以在admin数据库下建立任意集合,存储任何数据,但强烈建议不要使用admin数据库存储应用业务数据,最好创建新的数据库。

    admin数据库里的system.users、system.roles2个集合的数据MongoDB会cache在内存里,这样不用每次鉴权都从磁盘加载用户角色信息。目前cache的维护代码,只有在保证system.users、system.roles的写入都串行化的情况下才能正确工作。

    MongoDB admin数据库的写入操作的锁级别只能到DB级别,不支持多个collection并发写入,在写入时也不支持并发读取。如果用户在admin数据库里存储业务数据,则可能遭遇性能问题。

    config库

    config库在使用MongoDB分片功能时起到作用,主要存储分片集群基础信息。

    参考

    MongoDB管理:慎用local、admin数据库

    https://mongoing.com/archives/2599

    MongoDB三大系统库详解

    https://blog.csdn.net/qq_42979842/article/details/107105017

    MongoDB系统数据库

    https://haicoder.net/mongodb/mongodb-system-db.html

    相关文章

      网友评论

          本文标题:【mongoDB】mongoDB保留数据库

          本文链接:https://www.haomeiwen.com/subject/xxbrtrtx.html