Docs 菜单

Docs 主页开发应用程序MongoDB Manual

flushRouterConfig

在此页面上

  • 定义
  • 语法
  • 考虑因素
flushRouterConfig

flushRouterConfig将分片集群的缓存路由表标记为过时,导致请求路由表的下一个操作刷新缓存。路由表缓存的管理通常由集群自动处理。您应该只需要在特定实例中手动运行flushRouterConfig命令,如注意事项中所示。

注意

flushRouterConfig执行movePrimarydropDatabase 命令后,不再需要运行 。现在,这两个命令会在运行时根据需要自动刷新分片集群的路由表。

从 MongoDB 4开始。 0 。 6 (以及3 . 6 . 11 )中, flushRouterConfigmongosmongod实例上可用,并且具有以下事务语法:

  • 在集合命名空间参数中传递时,刷新指定集合的缓存:

    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 或更早版本,则在执行movePrimarydropDatabase命令后。

  • 如果运行的是 MongoDB 4.2.2 或更早版本(或者 4.0.14 或更早版本),则在手动清除无法分割的数据块(即不可分割的数据块)的jumbo标志后。有关更多信息,请参阅清除jumbo标志

  • 在运行db.collection.getShardDistribution()命令之前。 这可确保命令返回最新信息。

← enableSharding