mongodb - 当 mongodb 实例作为 SECONDARY 添加到副本集时,本地用户和角色会发生什么?
问题描述
好吧,我正在将我的独立 mongo 部署转换为 3 成员副本集。为了加快速度,我已将数据目录从mongo1.example.com复制到其他 2 个虚拟机(mongo2.example.com和mongo3.example.com),但我想知道:
- 用户和角色也要复制吗?
- 如果是,在我添加到副本集后它们会发生什么?
- 如果我从 RS 中删除mongo2.example.com并将其转换为独立的,我可以使用添加到 RS 之前的凭据将任何客户端连接到mongo2.example.com或mongo3.example.com吗?
- 如果我将用户添加到主要用户,我是否必须在每个成员中添加它?
谢谢!
解决方案
一些非常好的问题。
用户和角色也要复制吗?
是的,用户记录和角色信息存储在管理数据库中。如果您复制整个数据目录,那么您也在复制这些目录。
如果是,在我添加到副本集后它们会发生什么?如果我将用户添加到主要用户,我是否必须将其添加到每个成员中?
如果您尝试将任何数据写入主副本集成员以外的副本集成员,则会收到错误消息。
在副本集中,添加到除 之外的数据库中的文档local
,包括用户数据,都记录在 oplog 中并复制到辅助节点。
如果我从 RS 中删除 mongo2.example.com 并将其转换为独立的,我可以使用添加到 RS 之前的凭据将任何客户端连接到 mongo2.example.com 或 mongo3.example.com 吗?
如果将副本集成员转换为独立成员,它会保留之前拥有的所有数据,包括用户记录和角色。
如果将包含数据或用户记录的节点添加到副本集中,所有预先存在的数据将被丢弃并替换为副本集中的数据。如果您随后从副本集中删除此节点,它将拥有它在成为成员时所做的数据和用户,任何以前的数据都将无法挽回地丢失。
推荐阅读
- python - 将箱线图组合在一个图中
- java - 如何使用 Apache POI 将带边框的图像添加到 Word 中的表格单元格中?
- c# - Listviewitem 绑定到 WPF 中模型类型的静态字段?
- java - 如何编辑存在于矩阵中的变量 - Java?
- c++ - 没有收到来自 C++ 代码的预期输出
- haskell - Haskell 如何进行后期评估?
- java - spring boot 在哪里写授权?在弹簧拦截器或过滤器中?
- android - 是否有使用字幕的 ExoPlayer + Leanback 库示例?
- python - .str.lower() 返回空值
- python - Pytest 不应该去生产 Azure 平台