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

一.慎用local数据库

local数据库,从名字可以看出,它只会在本地存储数据,即local数据库里的内容不会同步到副本集里其他节点上去;目前local数据库主要存储副本集的配置信息、oplog信息,这些信息是每个Mongod进程独有的,不需要同步到副本集种其他节点。

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

另外,对于重要的数据,除了不能存储在local数据库,还要注意MongoDB默认的WriteConcern是{w: 1},即数据写到Primary上(不保证journal已经写成功)就向客户端确认,这时同样存在丢数据的风险。对于重要的数据,可以设置更高级别的如{w: "majority"}来保证数据写到大多数节点后再向客户端确认,当然这对写入的性能会造成一定的影响。

慎用admin数据库

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

mongo-9551:PRIMARY> use admin

switched to db admin

mongo-9551:PRIMARY> db.getCollectionNames()

[ "system.users", "system.version" ]

system.version存储authSchema的版本信息

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

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

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

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

从代码中我们可以看出,MongoDB将将admin数据库上的意向写锁(MODE_IX)直接升级为写锁(MODE_X),也就是说admin数据库的写入操作的锁级别只能到DB级别,不支持多个collection并发写入,在写入时也不支持并发读取。如果用户在admin数据库里存储业务数据,则可能遭遇性能问题。

if (supportsDocLocking() || enableCollectionLocking) {

if (supportsDocLocking() || enableCollectionLocking) {

+

+            // The check for the admin db is to ensure direct writes to auth collections

+            // are serialized (see SERVER-16092).

+            if (_id == resourceIdAdminDB && !isRead) {

+                _mode = MODE_X;

+            }

+

_lockState->lock(_id, _mode);

转载于:https://blog.51cto.com/wujianwei/1964023

MongoDB需要慎用local、admin数据库相关推荐

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

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

  2. mongodb 字段出现次数_MongoDB数据库

    内容回顾 Xpath选择器 不要求记忆,只要混个眼熟即可 基于openpyxl模块爬取豆瓣电影 单页爬取 多页爬取 1.校验请求头里面是否有User-Agent参数 请求头里面加上即可 2.限制IP规 ...

  3. MongoDB小型文档型数据库使用

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中 ...

  4. mongoDB使用及简单命令(忘记了密码怎么办、mongoDB密码重置、创建数据库、mongoDB启动停止)

    一.安装(略) 启动命令: ​ 带权限验证: mongod --dbpath /home/mongoDB/data --logpath /home/mongoDB/log/log --logappen ...

  5. 查看mongodb数据路径_【数据库】mongodb数据库安装

    简介 本文简单介绍mongodb主从备份安装.包括两部分: 数据库安装 主从配置 安装数据库 1.配置yum源 cd /etc/yum.repos.d vi mongodb-org-4.0.repo ...

  6. BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介、下载、案例应用之详细攻略

    BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介.下载.案例应用之详细攻略 目录 MongoDB的简介 1.MongoDB的主要功能特性 2.对MongoDB进行增删改查( ...

  7. 2019年技术盘点云数据库篇(二):阿里云携手MongoDB率先上线4.2数据库 云上数据库已是大势所趋...

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 刘丹 出品 | CSDN云计算(ID:CSDNcloud) 随着技术的飞速发展,云数据库在云计算的大背景下,作为一种新兴的共享基础架 ...

  8. MongoDB语法与现有关系型数据库SQL语法比较

    MongoDB语法与现有关系型数据库SQL语法比较 MongoDB语法 MySql语法 db.test.find({'name':'foobar'}) select * from test where ...

  9. mongodb 用命令导入导出数据库,用命令在Robo3T 上查询。

    mongodb 用命令导入导出数据库,用命令在Robo3T 上查询. mongodb导入导出命令 导入命令 导出命令 在Robo3T上查询 mongodb导入导出命令 快捷方式:如果没有配置mongo ...

最新文章

  1. mysql 的isnull
  2. 揭秘设计模式:策略模式(Strategy)的枚举(Enum)实现
  3. nc 发布元数据_智联科发布新一代连续式NC膜粘膜划膜一体机
  4. MYSQL读写性能测试
  5. 苹果cms卫视直播html源码,苹果CMS如何使用默认模板新建一个直播页面?
  6. c++编写植物大战僵尸
  7. UA PHYS515A 电磁理论IV 时变电磁场理论4 电磁场的动量与麦克斯韦压缩能张量
  8. 章文嵩评价左耳朵耗子(2016年发布于内网)
  9. python粒子群喷发_python3实现单目标粒子群算法
  10. android 谷歌地图围栏,基于OpenLayers实现地理围栏 谷歌百度高德地图都可以
  11. 巴法络的ts系列服务器,BUFFALO TS5400D NAS 巴法络 4BAY 网络存储服务器 塔式 企业级...
  12. 主窗口(10):【类】QWidgetAction [官翻]
  13. 使用SVM模型对京东评价进行情感分析---【大白话版】
  14. 利用filezilla下载文件,出现无法启动传输和严重文件错误
  15. Python一键更换证件照背景色
  16. 微星超龙显卡的性能模式无法开机的原因与解决办法
  17. fffffffffffffffffff
  18. 亿赛通喜获 “2015年度中国软件和信息服务数据安全领域杰出企业奖”
  19. MATLAB的RTL-SDR硬件支持包使用详细教程
  20. 暗夜精灵6-ubuntu18.04-显卡驱动

热门文章

  1. postgresql 集合类型_PostgreSQL 分组集合新功能(GROUPING SETS,CUBE,ROLLUP)
  2. 查oracle执行的sql,oracle查询正在执行的sql
  3. python解析器打包_打包发布Python模块的方法详解
  4. 前端提示框定位在鼠标的右下_前端基础高频面试题(更新中)
  5. Android FAE工程师要求,使用AndroidStudio进行系统应用开发
  6. 20210325:力扣递归,回溯类型题目合集
  7. java 新项目计划_Java的新项目学成在线笔记-day6(十二)
  8. 国际市场营销知识框架图_货币银行学知识怎么学?知识点很杂乱?已经为你整理好了!...
  9. Maven和Eclipse整合
  10. 《我的世界》AI大战降临:6000万帧超大数据集已发布,NeurIPS 19向你约战