本文汇总了文档数据库 MongoDB 版实例管理的常见问题。
文档数据库 MongoDB 版是一款完全兼容 MongoDB 协议,且具备高可用、高性能的在线云数据库服务。它支持绝大部分的 MongoDB 命令操作,可以与任何兼容 MongoDB 的客户端建立连接进行数据存储或执行相应数据库操作。更多关于文档数据库 MongoDB 版的信息,请参见什么是文档数据库 MongoDB 版。
文档数据库 MongoDB 版提供了副本集和分片集群两种架构,每种架构的实例都支持多种规格配置,可灵活选择,满足您对不同性能、容量需求和应用场景的要求。更多详情,请参见产品规格。
支持。文档数据库 MongoDB 版使用实例 ID 作为实例的唯一标识符,每个实例在创建时都会随机生成一个唯一的实例 ID。实例名称支持选填,若不填,默认以实例 ID 作为当前实例的名称,您也可以根据需要自定义实例名称。更多详情,请参见创建实例。
文档数据库 MongoDB 版支持批量创建实例,每次最多支持同时创建 10 个实例。具体操作步骤,请参见创建实例。
说明
每个火山引擎主账号在每个地域下默认最多可购买 30 个 MongoDB 实例。若您需要调整配额购买更多实例,请前往配额中心提交配额申请。
文档数据库 MongoDB 版支持两种实例类型,不同类型的 MongoDB 实例支持的变配方案不同。更多关于 MongoDB 实例支持的变配方案详情,请参见变更实例配置。
文档数据库 MongoDB 版当前支持 MongoDB 4.0、4.2、4.4、5.0 和 6.0 版本。建议使用对应数据库版本的客户端来访问,您可以从 MongoDB Drivers 下载各语言的客户端。
您可以通过如下步骤查看 MongoDB 实例使用的数据库版本。
通过 Mongo Shell 连接 MongoDB 实例。详情请参见通过 Mongo Shell 工具连接实例。
执行以下命令查看数据库版本。
db.version()
暂不支持直接 MongoDB 数据库版本(如从 MongoDB 5.0 版本升级至 MongoDB 6.0 版本)。但您可以创建一个新的高版本实例,用新高版本实例替换原低版本实例的方式实现。具体操作步骤如下:
说明
关于 MongoDB 版本的更多详情,请参见版本介绍。
暂不支持将实例从副本集直接升级为分片集群架构。但您可以创建一个新实例,用新实例替换旧实例的方式实现。具体操作步骤如下:
说明
关于 MongoDB 实例架构的更多详情,请参见产品架构。
因为您新建实例所属的项目与您在控制台上选择进入的项目不是同一个。
在 MongoDB 控制台上查看实例时,需要先指定目标实例所属项目和所在地域。您可以在控制台右上角的项目和地域下拉列表中,分别选择实例所属的项目和地域。
MongoDB 的数据备份是以分片形式存储在对象存储 TOS 中的,在 MongoDB 控制台的备份文件列表中所展示的是未压缩的数据备份文件大小;而在您单击获取备份文件后,系统会将 TOS 中的备份文件先进行压缩再提供下载,下载后的文件大小是压缩后的文件大小。
因此,针对数据备份文件,您会看到控制台上展示的备份文件大小(未压缩)比您下载下来的数据备份文大小(已压缩)更大。示例如下:
关于如何获取和下载备份文件的操作步骤,请参见管理备份文件。
创建私有网络时可指定项目,但创建子网时不支持指定项目,子网默认与与所属 VPC 在同一项目下。VPC 和子网的项目变更具有独立性,即修改 VPC 所属项目并不会同时修改当前 VPC 下子网的所属项目。更多详情,请参见私有网络项目管理。
因此,若修改了 VPC 所属项目,您还需要将 VPC 下的子网项目也进行相应变更,保证两者所属项目的一致性,否则非全局权限子用户创建云资源(如文档数据库 MongoDB 版)时将无法选择子网或出现异常报错。修改所属项目的具体操作步骤,请参见项目资源管理。
文档数据库 MongoDB 版的 oplog(operations log
) 存储了数据库中所有对文档的改动操作,用于节点间的主从复制。文档数据库 MongoDB 版默认的 oplog 大小(即 replication.oplogSizeMB
参数值) 为实例最大可用存储空间的 10 %(例如,实例的最大可用存储空间为 20GiB,那么相应的 oplog 大小即为 2GiB),且 oplog 大小会随着磁盘扩容而自动调整。
oplog 保留窗(也称为 oplog 可用时间)即 oplog 记录表中最老的一条 oplog 和最新的一条 oplog 间的时间差。主从复制需要依赖这个 oplog 窗口,只有在同步源的 oplog 窗口找到期望的 oplog 记录时,从节点才能正常进行同步。如果 oplog 可用时间过短,那么能保留的 oplog 记录则有限,在主从复制时延增大、从库重建等场景下,因缺失所需 oplog 导致主从复制失败的风险则会增加,进而影响实例可用性和数据可靠性。
因此,当实例的 oplog 可用时间不足时,您就会收到 oplog 保留窗过小的事件监控告警消息。收到该事件监控告警后,您需要对实例的 replication.oplogSizeMB
参数值作适当调整,您可以参考如下计算公式估算出replication.oplogSizeMB
参数的建议值:
计算公式
说明
replication.oplogSizeMB
参数的设置方法,请参见修改实例参数。replication.oplogSizeMB
建议值 = replication.oplogSizeMB
当前值 × 推荐调整系数
您可以根据如下信息估算出推荐调整系数
:
= 推荐的 oplog 可用时间 ➗ 实际的 oplog 可用时间
=(实例当前数据量 ➗ 主从复制常见的同步速率)➗ 实际的 oplog 可用时间。
上述计算公式中各计算项的说明如下表所示。
计算项 | 说明 |
---|---|
实例当前数据量 | 您可以通过副本集实例上主节点的数据磁盘使用量,或分片集群实例中各 Shard 主节点的数据磁盘使用量之和估算实例当前的数据量。 |
主从复制常见的同步速率 | 主从复制的同步速率表示的是主从节点每小时可以同步的数据量。通常情况下,主从复制时的数据同步速率约为 50GiB/小时。 |
oplog 可用时间 | 您可以在 MongoDB 控制台上查看实例的 Oplog 可用时间监控指标。查看方法,请参见查看监控数据。 |
计算示例
假设存在一个 MongoDB 副本集实例,实例相关信息如下:
replication.oplogSizeMB
参数当前值:采用动态取值方式,且实例的最大可用存储空间为 1000GiB,replication.oplogSizeMB
参数的当前值即为 1000GiB × 10% = 100GiB。那么,当该实例收到 oplog 保留窗过小的事件监控告警后,可大致估算出推荐的调整系数为:500GiB ➗ 50GiB/小时 ➗ 4 小时 = 2.5。
因此,replication.oplogSizeMB
建议值为:2.5 × 100GiB = 250GiB,即建议您将 replication.oplogSizeMB
参数值调整为 250GiB。
当您通过扩容操作为实例增加 Shard 分片后,出于数据自动均衡的需要,MongoDB Balancer 会立刻启动搬迁流程。在搬迁完成后,原分片上的数据将会被删除。需要注意的是,MongoDB 在默认设置下,并未对数据迁移的数据量以及间隔时间加以限制。所以,从开启分片直至数据完全实现均衡的这一时间段内,如果您的 MongoDB 实例中已存在大量数据,primary shard 极有可能出现负载增加的情况。在这种情形下,时延敏感业务很可能会有明显感知,例如出现 CPU 使用率异常攀升、业务访问延迟加剧、页面响应速度变慢等状况。
若在为 MongoDB 实例增加 Shard 分片过程中出现上述问题,您可尝试通过以下 4 个参数来限制实例的数据迁移与清理速度。
说明
参数名称 | 说明 | 参数设置示例 |
---|---|---|
该参数可用于指定迁移过程中,每个插入批次的间隔时间。单位:毫秒。默认值:0。
| 您可以通过如下命令将迁移的间隔时间设置为 100 毫秒。
| |
该参数可用于指定迁移过程中,每个插入批次的文档数量。默认值:0。
| 您可以通过如下命令将每次迁移的文档数量设置为 500。
| |
在范围迁移的清理阶段,每个删除批次的间隔时间。单位:毫秒。
| 您可以通过如下命令将删除的间隔时间设置为 100 毫秒。
| |
该参数指定了在范围迁移的清理阶段,每次批量删除的最大文档数。
| 您可以通过如下命令将每次清理删除的文档数量设置为 50。
|