创建一个与已删除数据库同名的新数据库后,无法从新数据库中读取到最新数据,或无法将数据写入新数据库。
4.0 或 4.2 版本的 MongoDB 分片集群实例。
由于 MongoDB 4.4 之前版本的实例使用 dropDatabase
命令删除目标数据库后,没有自动执行 flushRouterConfig
命令,导致分片集群实例中的节点可能并没有刷新元数据缓存。更多详情,请参见 MongoDB issues。
说明
从 MongoDB 4.4 版本起,执行dropDatabase
命令时系统会根据需要自动刷新分片集群的路由表。因此针对 MongoDB 4.4 及之后版本的 MongoDB 分片实例,使用 dropDatabase
命令删除目标数据库后无需再运行 flushRouterConfig
。更多详情,请参见flushRouterConfig。
您可以参考如下建议规避上述问题:
flushRouterConfig
命令后再执行读写操作,以确保分片集群中的所有节点都已刷新了元数据缓存。MongoDB 数据库完整删除操作步骤,请参见 db.dropDatabase()。sh.enableSharding
命令开启分片集群实例数据库的分片功能,并通过 sh.shardCollection
命令将未分片的集合转为分片集合。