Docs 主页 → 开发应用程序 → MongoDB Manual
flushRouterConfig
定义
flushRouterConfig
flushRouterConfig
将分片集群的缓存路由表标记为过时,导致请求路由表的下一个操作刷新缓存。路由表缓存的管理通常由集群自动处理。您应该只需要在特定实例中手动运行flushRouterConfig
命令,如注意事项中所示。
注意
flushRouterConfig
执行movePrimary
或dropDatabase
命令后,不再需要运行 。现在,这两个命令会在运行时根据需要自动刷新分片集群的路由表。
语法
从 MongoDB 4开始。 0 。 6 (以及3 . 6 . 11 )中, flushRouterConfig
在mongos
和mongod
实例上可用,并且具有以下事务语法:
在集合命名空间参数中传递时,刷新指定集合的缓存:
db.adminCommand( { flushRouterConfig: "<db.collection>" } ) 在数据库命名空间参数中传递时,刷新指定数据库及其所有collection的缓存:
db.adminCommand( { flushRouterConfig: "<db>" } ) 在不带参数运行或传入非字符串标量值(例如
1
):db.adminCommand("flushRouterConfig") db.adminCommand( { flushRouterConfig: 1 } )
注意
在 MongoDB 4中。 0 。 5及更早版本(以及3 . 6 . 10及更早版本)中, flushRouterConfig
仅适用于mongos
实例,并且只能刷新所有数据库及其集合的缓存:
db.adminCommand("flushRouterConfig") db.adminCommand( { flushRouterConfig: 1 } )
考虑因素
通常,作为正常操作的一部分,分片集群的路由表会根据需要自动刷新。但是,在以下情况下应手动发出flushRouterConfig
命令:
如果运行的是 MongoDB 4.2 或更早版本,则在执行
movePrimary
或dropDatabase
命令后。如果运行的是 MongoDB 4.2.2 或更早版本(或者 4.0.14 或更早版本),则在手动清除无法分割的数据块(即不可分割的数据块)的
jumbo
标志后。有关更多信息,请参阅清除jumbo
标志。在运行
db.collection.getShardDistribution()
命令之前。 这可确保命令返回最新信息。