本文汇总云数据库 MongoDB 在实例创建、查看、规格选型、读写策略等方面的高频问题。
如何创建云数据库 MongoDB 实例?
如何查看实例详情?
如何选择副本集实例还是分片集群实例?
按数据规模和访问模式选择:
推荐选择副本集实例的场景:
数据规模在单实例最大容量范围内。
读多写少,可通过增加从节点扩展读性能。
集合数量多但单集合数据量不大。
多字段随机组合查询,难以确定合适片键的场景。
推荐选择分片集群实例的场景:
数据规模预计超过单副本集容量上限(TB - PB 级)。
写流量超过单副本集写入上限,需要横向扩展写能力。
通用 I 型与旧规格类型有什么区别?应如何选择?
通用 I 型是当前新购实例的默认规格类型,同时支持本地盘和云盘两种存储介质,提供更丰富的节点规格选择和更优的性价比。
本地盘:计算与存储一体,时延更低,适合对性能敏感的业务。
云盘:计算与存储分离,容量调整更灵活,支持独立扩展磁盘。
升级实例规格需要多长时间?是否影响业务?
升级所需时间与实例已用容量相关。升级过程中会发生一次主从切换,切换瞬间存在短暂(约数秒)的连接闪断。建议在业务低峰期操作,并确保应用具备自动重连能力。
实例的连接数规格是多少?是否支持提升?
如何设置读操作的读取优先级(读写分离)?
当业务对数据实时一致性要求不高时,可通过设置
readPreference 将读请求分流到从节点,减轻主节点压力。常用取值如下:取值 | 含义 | 是否默认 |
primary | 只读主节点 | 是 |
primaryPreferred | 优先主节点,主节点不可用时读从节点 | 否 |
secondary | 只读从节点,从节点不可用时报错 | 否 |
secondaryPreferred | 优先从节点,从节点不可用时读主节点 | 否 |
nearest | 就近读,读网络时延最低的节点 | 否 |
在连接 URI 中设置示例:
mongodb://<username>:<password>@<host>:<port>/admin?authSource=admin&readPreference=secondaryPreferred
Running Environment
Operating System: Ubuntu 24.04.3 LTS / x86_64
Runtime Version: GNU bash, version 5.2.21(1)-release (x86_64-pc-linux-gnu)
如何选择写入策略(Write Concern)以平衡性能与可靠性?
通过
writeConcern 的 w 选项控制写入确认级别:选项 | 描述 | 适用场景 |
{w: 0} | 不等待任何写入确认 | 不关注数据完整性 |
{w: 1} | 写入主节点即返回确认(默认) | 兼顾性能与基本可靠性 |
{w: "majority"} | 写入多数派节点后才返回确认 | 数据可靠性要求高,避免回滚 |
对可靠性要求高的场景,可设置
w: "majority" 并配合 j: true(journal 持久化后确认),可有效避免数据回滚,但写入性能会下降。优化建议: 当使用
w: "majority" 出现写入性能下降时,可通过关闭链式复制减少多数派确认链路:// 确认是否开启链式复制rs.conf().settings.chainingAllowed// 关闭链式复制cfg = rs.config()cfg.settings.chainingAllowed = falsers.reconfig(cfg)
如何查询可创建的实例规格?
如何销毁实例?到期不续费会自动删除吗?
自助销毁:在控制台实例列表的操作列,选择更多 > 销毁/退还执行。具体信息,请参见 退还/销毁实例(回收站隔离)。
到期销毁:包年包月实例到期后不续费会自动销毁;按量计费实例欠费隔离后逾期也会销毁。具体信息,请参见 欠费说明。