Definición
dropConnectionsLa
dropConnectionsEl comando deja caer elmongod/mongosconexiones salientes de la instancia a los hosts especificados. EldropConnectionsdebe ejecutarse contra la base de datosadmin.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { dropConnections: 1, hostAndPort : [ "host1:port1", "host2:port2", ... ], comment: <any> } )
Campos de comandos
El comando requiere el siguiente campo:
Campo | Tipo | Descripción |
|---|---|---|
| arreglo | Cada elemento del arreglo representa el nombre de host y el puerto de una máquina remota. |
| any | Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:
Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.). |
Control de acceso
Si la implementación exige autenticación/autorización, el comando dropConnections requiere la acción dropConnections en el recurso del clúster.
Cree un rol definido por el usuario en la base de datos admin donde el arreglo privilege incluya el siguiente documento:
{ "resource" : { "cluster" : true } }, "actions" : [ "dropConnections" ] }
Utiliza
db.createUser()para crear un usuario en la base de datosadmincon el rol personalizado.or
Use
db.grantRolesToUser()para otorgar el rol a un usuario existente en la base de datosadmin.
Por ejemplo, la siguiente operación crea un rol definido por el usuario en la base de datos admin con los privilegios para soportar dropConnections:
db.getSiblingDB("admin").createRole( { "role" : "dropConnectionsRole", "privileges" : [ { "resource" : { "cluster" : true }, "actions" : [ "dropConnections" ] } ], "roles" : [] } )
Asignar el rol personalizado a un usuario en la base de datos admin:
db.getSiblingDB("admin").createUser( { "user" : "dropConnectionsUser", "pwd" : "replaceThisWithASecurePassword", "roles" : [ "dropConnectionsRole" ] } )
El usuario creado puede ejecutar dropConnections.
Para ver más ejemplos de creación de usuarios, consulta Crear un usuario en implementaciones autogestionadas. Para ver un tutorial sobre cómo agregar privilegios a un usuario de base de datos existente, consulta Modificar el acceso para un usuario existente.
Comportamiento
dropConnections ignora silenciosamente hostAndPort los elementos que no incluyen tanto el nombre de host como el puerto de la máquina remota.
Ejemplo
Considera un set de réplicas con un nodo recientemente eliminado en oldhost.example.com:27017. Ejecutar el siguiente comando dropConnections contra cada miembro activo del set de réplicas garantiza que no queden conexiones salientes a oldhost.example.com:27017:
db.adminCommand( { "dropConnections" : 1, "hostAndPort" : [ "oldhost.example.com:27017" ] } )
El comando devuelve una salida similar a la siguiente:
{ "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1551375968, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : Long(0) } }, "operationTime" : Timestamp(1551375968, 1) }
Puede confirmar el estado del grupo de conexiones para mongod o mongos utilizando el connPoolStats comando.