Overview
Los sets de réplicas permiten que una implementación de MongoDB permanezca disponible durante la mayor parte de una ventana de mantenimiento.
Este documento describe el procedimiento básico para realizar el mantenimiento de cada uno de los nodos de un set de réplicas. Además, esta secuencia particular se esfuerza por minimizar el tiempo que el principal está inactivo y controlar el impacto en toda la implementación.
Utilice estos pasos como base para operaciones de conjuntos de réplicas comunes, particularmente para procedimientos como la actualización a la última versión de MongoDB.
Procedimiento
Para cada miembro de un conjunto de réplicas, comenzando con un miembro secundario, realice la siguiente secuencia de eventos, terminando con el principal:
Reiniciar el
mongodinstancia como autónomo.Ejecute la tarea en la instancia autónomo.
Reinicia la instancia
mongodcomo nodo del set de réplicas.
Reinicie el secundario como independiente en un puerto diferente.
En el indicador del shell del sistema operativo, reinicie mongod como una instancia autónomo.
Si está utilizando un archivo de configuración, realice las siguientes actualizaciones de configuración:
Comenta la opción
replication.replSetName.Cambia el
net.porta un puerto diferente. Toma nota de la configuración original del puerto como comentario.Establece el parámetro
disableLogicalSessionCacheRefreshentrueen la secciónsetParameter.Si el
mongodes un partición o servidor de configuración nodo, también debes:Comenta la opción
sharding.clusterRole.Establece el parámetro
skipShardingConfigurationChecksentrueen la secciónsetParameter.
Por ejemplo, si se realiza mantenimiento en un miembro del conjunto de réplicas del servidor de configuración/fragmento para mantenimiento, el archivo de configuración actualizado incluirá contenido como el del siguiente ejemplo:
net: bindIp: localhost,<hostname(s)|ip address(es)> port: 27218 # port: 27018 #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true
Si utiliza opciones de línea de comandos, realice las siguientes actualizaciones de configuración para reiniciar:
Remover
--replSetName.Modificar
--porta un puerto diferente.Configura el parámetro
disableLogicalSessionCacheRefreshatrueen la opción--setParameter.Si el
mongodes un partición o servidor de configuración nodo, también debes:Elimine
--shardsvrsi es un nodo de la partición y--configsvrsi es un nodo del servidor de configuración.Establece el parámetro
skipShardingConfigurationChecksentrueen la secciónsetParameter.
Por ejemplo, para reiniciar un miembro del conjunto de réplicas que no es parte de un clúster fragmentado:
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter disableLogicalSessionCacheRefresh=true
Por ejemplo, para reiniciar un miembro del conjunto de réplicas del servidor de configuración/fragmento para mantenimiento:
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true
Advertencia
Antes de vincular la instancia a una dirección IP de acceso público, se debe asegurar el clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, se debe consultar Checklist de seguridad para implementaciones autogestionadas. Como mínimo, se debe considerar habilitar la autenticación y reforzar la infraestructura de red.
Siempre inicia mongod con el mismo usuario, incluso al reiniciar un miembro de un set de réplicas como una instancia autónoma.
Realizar operaciones de mantenimiento en el secundario.
Mientras el nodo es independiente, utilice mongosh para realizar labores de mantenimiento:
mongo --port 27218
Importante
Mientras el nodo es autónomo, no se replican guardados en dicho nodo ni los guardados realizados en dicho nodo se replican en los demás nodos del set de réplicas.
Asegúrese de que cualquier escritura en este autónomo no entre en conflicto con las escrituras oplog que se aplicarán al nodo cuando vuelva a unirse al set de réplicas.
Reinicie mongod como miembro del conjunto de réplicas.
Después de realizar todas las tareas de mantenimiento, utilice el siguiente procedimiento para reiniciar el mongod como nodo del conjunto de réplicas en su puerto habitual.
mongoshDesde, apague el servidor independiente después de completar el mantenimiento:
use admin db.shutdownServer()
Reinicie la instancia mongod como miembro de set de réplicas con su configuración original; es decir, deshaga los cambios realizados durante el inicio como autónomo.
Tip
Asegúrese de eliminar el parámetro disableLogicalSessionCacheRefresh.
Para los nodos del partición o del servidor de configuración, asegúrese de remover el parámetro skipShardingConfigurationChecks.
Cuando haya comenzado, conecte mongosh a la instancia reiniciada.
El secundario tarda en alcanzar al primario. Desde mongosh, usa el siguiente comando para verificar que el nodo se ha puesto al día del estado RECOVERING al estado SECONDARY.
rs.status()
Realizar el mantenimiento en el principal al final.
Para realizar mantenimiento en el primario después de completar tareas de mantenimiento en todos los secundarios, conecta
mongoshal primario y usars.stepDown()para cambiar el rol del primario y permitir que uno de los secundarios sea elegido como el nuevo primario. Especifica un periodo de espera de 300 segundos para evitar que el nodo sea elegido primario de nuevo durante cinco minutos:rs.stepDown(300) Después de que el primario se retire, el set de réplicas elegirá un nuevo primario.
Reinicie
mongodcomo una instancia autónoma, realizando las siguientes actualizaciones de configuración.
Si está utilizando un archivo de configuración, realice las siguientes actualizaciones de configuración:
Comenta la opción
replication.replSetName.Cambia el
net.porta un puerto diferente. Toma nota de la configuración original del puerto como comentario.Configura el parámetro
disableLogicalSessionCacheRefreshatrueen la opción--setParameter.Si el
mongodes un partición o servidor de configuración nodo, también debes:Comenta la opción
sharding.clusterRole.Establece el parámetro
skipShardingConfigurationChecksentrueen la secciónsetParameter.
Por ejemplo, si se realiza mantenimiento en un miembro del conjunto de réplicas del servidor de configuración/fragmento para mantenimiento, el archivo de configuración actualizado incluirá contenido como el del siguiente ejemplo:
net: bindIp: localhost,<hostname(s)|ip address(es)> port: 27218 # port: 27018 #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true
Advertencia
Antes de vincular la instancia a una dirección IP de acceso público, se debe asegurar el clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, se debe consultar Checklist de seguridad para implementaciones autogestionadas. Como mínimo, se debe considerar habilitar la autenticación y reforzar la infraestructura de red.
Si usas opciones de línea de comando, realiza las siguientes actualizaciones de configuración:
Remover
--replSetName.Modificar
--porta un puerto diferente.Configura el parámetro
disableLogicalSessionCacheRefreshatrueen la opción--setParameter.Si el
mongodes un partición o servidor de configuración nodo, también debes:Elimine
--shardsvrsi es un nodo de la partición y--configsvrsi es un nodo del servidor de configuración.Establece el parámetro
skipShardingConfigurationChecksentrueen la secciónsetParameter.
Por ejemplo, para reiniciar un miembro del conjunto de réplicas que no es parte de un clúster fragmentado:
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter disableLogicalSessionCacheRefresh=true
Por ejemplo, para reiniciar un miembro del conjunto de réplicas del servidor de configuración/fragmento para mantenimiento:
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true
Advertencia
Antes de vincular la instancia a una dirección IP de acceso público, se debe asegurar el clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, se debe consultar Checklist de seguridad para implementaciones autogestionadas. Como mínimo, se debe considerar habilitar la autenticación y reforzar la infraestructura de red.
Realiza tareas de mantenimiento en el ahora autónomo.
Importante
Mientras el nodo es autónomo, no se replican guardados en dicho nodo ni los guardados realizados en dicho nodo se replican en los demás nodos del set de réplicas.
Asegúrese de que cualquier escritura en este autónomo no entre en conflicto con las escrituras oplog que se aplicarán al nodo cuando vuelva a unirse al set de réplicas.
Después de realizar todas las tareas de mantenimiento, reinicie la
mongodinstancia como un miembro del conjunto de réplicas con su configuración original; es decir, deshaga los cambios de configuración realizados al iniciar como independiente.Tip
Asegúrese de eliminar el parámetro
disableLogicalSessionCacheRefresh.Para los nodos del partición o del servidor de configuración, asegúrese de remover el parámetro
skipShardingConfigurationChecks.