El Las interfaces delínea de comandos y archivos de configuración ofrecen a los administradores de MongoDB una gran cantidad de opciones y configuraciones para controlar el funcionamiento del sistema de base de datos. Este documento ofrece una descripción general de las configuraciones comunes y ejemplos de configuraciones recomendadas para casos de uso comunes.
Si bien ambas interfaces brindan acceso a la misma colección de opciones y configuraciones, este documento utiliza principalmente la interfaz del archivo de configuración.
Si instaló MongoDB con un administrador de paquetes como
yumoapten Linux obrewen macOS, o con el instalador MSI en Windows, se ha proporcionado un archivo de configuración predeterminado como parte de su instalación:PlataformaMétodoarchivo de configuraciónLinux
aptAdministrador de paquetesyumozypper./etc/mongod.confmacOS
brewGestor de paquetes/usr/local/etc/mongod.conf(en procesadores Intel), o/opt/homebrew/etc/mongod.conf(sobre los procesadores Apple Silicon)Windows
Instalador MSI
<install directory>\bin\mongod.cfgSi instaló MongoDB mediante un archivo
TGZoZIPdescargado, debe crear su propio archivo de configuración. El ejemplo básico de configuración es un buen punto de partida.
Para la instalación de paquetes de MongoDB en Linux o macOS, también se proporciona un script de inicialización que utiliza este archivo de configuración predeterminado. Este script de inicialización puede usarse para iniciar en estas plataformas de la siguiente mongod manera:
En sistemas Linux que utilizan el sistema de inicio systemd (el
systemctlcomando):sudo systemctl start mongod En sistemas Linux que utilizan el sistema init SystemV (el
servicecomando):sudo service mongod start En macOS, utilizando el administrador de paquetes
brew:brew services start mongodb-community@6.0
Si instaló MongoDB con un TGZ ZIP archivo o, deberá crear su propio archivo de configuración. Encontrará un ejemplo básico de configuración más adelante en este documento. Una vez creado el archivo de configuración, puede iniciar una instancia de MongoDB con él usando las --config opciones -f mongod o de. Por ejemplo, en Linux:
mongod --config /etc/mongod.conf mongod -f /etc/mongod.conf
Modifique los valores en el archivo mongod.conf en su sistema para controlar la configuración de su instancia de base de datos.
Configurar la base de datos
Considere la siguiente configuración básica:
processManagement: fork: true net: bindIp: localhost port: 27017 storage: dbPath: /var/lib/mongo systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: journal: enabled: true
Para la mayoría de los servidores independientes, esta configuración básica es suficiente. Se parte de varias premisas, pero considere la siguiente explicación:
forkes,trueque habilita un modo demonio para, que separa (es decir, "bifurca") MongoDB de la sesión actual y le permite ejecutar la base de datos como un servidormongodconvencional.bindIpes,localhostlo que obliga al servidor a escuchar únicamente las solicitudes en la IP del host local. Se vincula únicamente a interfaces seguras a las que los sistemas de nivel de aplicación pueden acceder mediante el control de acceso proporcionado por el filtrado de red del sistema (es decir, el"cortafuegos").portes,27017que es el puerto predeterminado de MongoDB para las instancias de base de datos. MongoDB puede enlazarse a cualquier puerto. También puede filtrar el acceso según el puerto mediante herramientas de filtrado de red.Nota
Los sistemas tipo UNIX requieren privilegios de superusuario para conectar procesos a puertos inferiores a 1024.
quiettruees. Esto desactiva todas las entradas excepto las más críticas en el archivo de salida/registro y no se recomienda para sistemas de producción. Si activa esta opción, puede usar para modificarla durante lasetParameterejecución.dbPathes,/var/lib/mongoque especifica dónde MongoDB almacenará sus archivos de datos.Si se instaló MongoDB en Linux mediante un gestor de paquetes, como
yumoapt, el archivo/etc/mongod.confincluido con la instalación de MongoDB establece los siguientes valoresdbPathpredeterminados, según la distribución de Linux:PlataformaGestor de paquetespredeterminadodbPathRHEL / CentOS y Amazon
yum/var/lib/mongoSUSE
zypper/var/lib/mongoUbuntu y Debian
apt/var/lib/mongodbmacOS
brew/usr/local/var/mongodbLa cuenta de usuario bajo la que se ejecuta
mongodnecesitará acceso de lectura y escritura a este directorio.systemLog.pathes/var/log/mongodb/mongod.log, que es dondemongodescribirá su salida. Si no se establece este valor,mongodescribe toda la salida en la salida estándar (p. ej.,stdout).logAppendes,truelo que garantiza que no sobrescriba un archivo de registro existente después de la operación de inicio delmongodservidor.storage.journal.enabledes,truelo que habilita el registro en diario. Este registro garantiza la durabilidad de escritura en una sola instancia. 64Las compilaciones de bits demongodhabilitan el registro en diario de forma predeterminada. Por lo tanto, esta configuración puede ser redundante.
Dada la configuración predeterminada, algunos de estos valores pueden ser redundantes. Sin embargo, en muchas situaciones, indicar explícitamente la configuración aumenta la inteligibilidad general del sistema.
Consideraciones de seguridad
Las siguientes opciones de configuración son útiles para limitar el acceso a una mongod instancia:
net: bindIp: localhost,10.8.0.10,192.168.4.24,/tmp/mongod.sock security: authorization: enabled
net.bindIpEste ejemplo proporciona cuatro valores a la
bindIpopción:localhost, la interfaz localhost;10.8.0.10, una dirección IP privada que normalmente se utiliza para redes locales e interfaces VPN;192.168.4.24, una interfaz de red privada que normalmente se utiliza para redes locales; y/tmp/mongod.sock, una ruta de socket de dominio Unix.
Dado que las instancias de producción de MongoDB deben ser accesibles desde múltiples servidores de bases de datos, es importante vincular MongoDB a múltiples interfaces accesibles desde los servidores de aplicaciones. Al mismo tiempo, es importante limitar estas interfaces a las controladas y protegidas en la capa de red.
security.authorization- Al configurar esta opción en
true, se habilita el sistema de autorización en MongoDB. Si está habilitada, deberá iniciar sesión mediante la interfazlocalhostpor primera vez para crear las credenciales de usuario.
Tip
Configuración de replicación y fragmentación
Configuración de replicación
La configuración del conjunto de réplicas es sencilla y solo requiere que replSetName el valor de sea consistente entre todos los miembros del conjunto. Considere lo siguiente:
replication: replSetName: set0
Use nombres descriptivos para los conjuntos. Una vez configurados, use mongosh para agregar hosts al conjunto de réplicas.
Para habilitar la autenticación del set de réplicas usando archivos clave , agrega la siguiente opción keyFile [1]:
security: keyFile: /srv/mongodb/keyfile
La configuración habilita la autenticación y especifica un archivo de claves que los miembros del conjunto de réplicas deben usar cuando se autentican entre sí.keyFile
Tip
La sección Seguridad del conjunto de réplicas para obtener información sobre cómo configurar la autenticación con conjuntos de réplicas.
El documento de replicación para obtener más información sobre la replicación en MongoDB y la configuración del conjunto de réplicas en general.
| [1] | Los clústeres fragmentados y los conjuntos de réplicas pueden usar X.509 para la verificación de membresía en lugar de archivos de claves. Para más detalles, consulte X..509 |
Configuración de fragmentación
La fragmentación requiere instancias mongod con diferentes mongod configuraciones para los servidores de configuración y los fragmentos. Los servidores de configuración almacenan los metadatos del clúster, mientras que los fragmentos almacenan los datos.
Para configurar las instancias mongod del configsvr servidor de configuración, en el sharding.clusterRole archivo de configuración, especifique para la configuración.
Nota
Los servidores de configuración deben implementarse como un set de réplicas.
sharding: clusterRole: configsvr net: bindIp: 10.8.0.12 port: 27001 replication: replSetName: csRS
Para implementar servidores de configuración como un conjunto de réplicas, los servidores de configuración deben ejecutar el motor de almacenamiento WiredTiger. Initiate el conjunto de réplicas y agregar miembros.
Para configurar las mongod instancias del fragmento, especifique shardsvr para la sharding.clusterRole configuración y, si se ejecuta como un conjunto de réplicas, el nombre del conjunto de réplicas:
sharding: clusterRole: shardsvr replication: replSetName: shardA
Si se ejecuta como un conjunto de réplicas, initiate el conjunto de réplicas de fragmentos y agrega miembros.
Para el enrutador (es decir,), configuremongos mongos al menos un proceso con la siguiente configuración:
sharding: configDB: csRS/10.8.0.12:27001
Puede especificar miembros adicionales del conjunto de réplicas del servidor de configuración especificando nombres de host y puertos en forma de una lista separada por comas después del nombre del conjunto de réplicas.
Tip
La sección Fragmentación del manual para obtener más información sobre la fragmentación y la configuración del clúster.
Ejecutar múltiples instancias de base de datos en el mismo sistema
En muchos casos, no se recomienda mongod ejecutar varias instancias de en un solo sistema. En algunos tipos de implementaciones []2 y para fines de prueba, es posible que sea necesario ejecutar más de un en un solo mongod sistema.
En estos casos, utilice una configuración base para cada instancia, pero considere los siguientes valores de configuración:
storage: dbPath: /var/lib/mongo/db0/ processManagement: pidFilePath: /var/lib/mongo/db0.pid
El valordbPathcontrola la ubicación del directorio de datos de la instanciamongod. Asegúrese de que cada base de datos tenga un directorio de datos distinto y bien etiquetado. El valorpidFilePathcontrola dónde el procesomongodcoloca su archivo de ID de proceso (PID). Dado que este valor rastrea el archivomongodespecífico, es crucial que el archivo sea único y esté bien etiquetado para facilitar el inicio y la detención de estos procesos.
Cree scripts de inicio adicionales y/o ajuste su configuración de MongoDB existente y su script de inicio según sea necesario para controlar estos procesos.
| [2] | Los sistemas de un solo inquilino con SSD u otros discos de alto rendimiento pueden ofrecer niveles de rendimiento aceptables para varias mongod instancias. Además, es posible que varias bases de datos con conjuntos de trabajo pequeños funcionen correctamente en un solo sistema. |
Configuraciones de diagnóstico
Las siguientes opciones de configuración controlan varios comportamientos para fines de mongod diagnóstico:
operationProfiling.modeestablece el nivel del perfilador de base de datos. El perfilador no está activo de forma predeterminada debido a su posible impacto en el rendimiento. A menos que esta opción esté activada, no se perfilan las consultas.operationProfiling.slowOpThresholdMsconfigures the threshold which determines whether a query is "slow" for the purpose of the logging system and the profiler. The default value is 100 milliseconds. Set to a lower value if the logging system and the database profiler do not return useful results or set to a higher value to only log the longest running queries.Los miembros secundarios de un set de réplicas ahora registran entradas de oplog que tardan más que el umbral de una operación lenta en aplicarse. Estos mensajes lentos del oplog:
Se registran para los secundarios en el
diagnostic log.Se documentan en el registro bajo el componente
REPLcon el textoapplied op: <oplog entry> took <num>ms.No depende de los niveles de registro (ya sea a nivel del sistema o del componente)
No depende del nivel de perfil.
Se ven afectados por
slowOpSampleRate.
El perfilador no captura entradas lentas del oplog.
systemLog.verbositycontrola la cantidad de salida demongodregistro que escribe en el registro. Use esta opción solo si experimenta un problema que no se refleja en el nivel de registro normal.También puede especificar el nivel de detalle para componentes específicos mediante la
systemLog.component.<name>.verbosityopción. Para conocer los componentes disponibles,component verbosity settingsconsulte.
Para obtener más información, consulte también Generador de perfiles de base de datos y Rendimiento de MongoDB.