Overview
Los conjuntos 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 miembros de un conjunto de réplicas. Además, esta secuencia busca minimizar el tiempo de indisponibilidad del servidor principal 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 independiente.Realice la tarea en la instancia independiente.
Reinicie la instancia como miembro del conjunto de
mongodréplicas.
Reinicie el secundario como independiente en un puerto diferente.
En el indicador de shell del sistema operativo, reinicie mongod como una instancia independiente.
Si está utilizando un archivo de configuración, realice las siguientes actualizaciones de configuración:
Comente la
replication.replSetNameopción.Cambia el
net.porta un puerto diferente. Toma nota de la configuración original del puerto como comentario.Establezca el parámetro
disableLogicalSessionCacheRefreshentrueen lasetParametersección.Si
mongodes un fragmento o miembro del servidor de configuración, también debe:Comente la
sharding.clusterRoleopción.Establezca el parámetro
skipShardingConfigurationChecksentrueen lasetParametersección.
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:
Modificar a un puerto
--portdiferente.Establezca el parámetro
disableLogicalSessionCacheRefreshentrueen la--setParameteropción.Si
mongodes un fragmento o miembro del servidor de configuración, también debe:Elimine si es un
--shardsvr--configsvrmiembro del fragmento y si es un miembro del servidor de configuración.Establezca el parámetro
skipShardingConfigurationChecksentrueen lasetParametersección.
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.
Inicie siempre con el mismo usuario, incluso al reiniciar un miembro del conjunto de réplicas como una instancia mongod independiente.
Realizar operaciones de mantenimiento en el secundario.
Mientras el miembro sea independiente, utilice para realizar mongosh mantenimiento:
mongo --port 27218
Importante
Mientras el miembro sea independiente, no se replican escrituras en este miembro ni tampoco se replican escrituras en este miembro en los demás miembros del conjunto 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 como miembro del conjunto de réplicas en su puerto mongod 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 miembros del servidor de configuración o fragmento, asegúrese de eliminar el skipShardingConfigurationChecks parámetro.
Una vez iniciado, conecte a la instancia mongosh reiniciada.
El secundario tarda en alcanzar al principal. Desde, use el siguiente comando para mongosh RECOVERING SECONDARY verificar que el miembro haya alcanzado el estado al.
rs.status()
Realizar mantenimiento en la horma primaria.
Para realizar el mantenimiento del principal después de completar las tareas de mantenimiento en todos los secundarios, conecte
mongoshal principal y users.stepDown()para reducir el nivel del principal y permitir que uno de los secundarios sea elegido como nuevo principal. Especifique un periodo de espera de 300 segundos para evitar que el miembro vuelva a ser elegido principal durante cinco minutos.rs.stepDown(300) Una vez finalizados los pasos primarios, el conjunto de réplicas elegirá un nuevo primario.
Reinicie como una instancia independiente y realice las siguientes actualizaciones de
mongodconfiguración.
Si está utilizando un archivo de configuración, realice las siguientes actualizaciones de configuración:
Comente la
replication.replSetNameopción.Cambia el
net.porta un puerto diferente. Toma nota de la configuración original del puerto como comentario.Establezca el parámetro
disableLogicalSessionCacheRefreshentrueen la--setParameteropción.Si
mongodes un fragmento o miembro del servidor de configuración, también debe:Comente la
sharding.clusterRoleopción.Establezca el parámetro
skipShardingConfigurationChecksentrueen lasetParametersección.
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 utiliza opciones de línea de comandos, realice las siguientes actualizaciones de configuración:
Modificar a un puerto
--portdiferente.Establezca el parámetro
disableLogicalSessionCacheRefreshentrueen la--setParameteropción.Si
mongodes un fragmento o miembro del servidor de configuración, también debe:Elimine si es un
--shardsvr--configsvrmiembro del fragmento y si es un miembro del servidor de configuración.Establezca el parámetro
skipShardingConfigurationChecksentrueen lasetParametersección.
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.
Realizar tareas de mantenimiento en el ahora independiente.
Importante
Mientras el miembro sea independiente, no se replican escrituras en este miembro ni tampoco se replican escrituras en este miembro en los demás miembros del conjunto 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 miembros del servidor de configuración o fragmento, asegúrese de eliminar el
skipShardingConfigurationChecksparámetro.