Overview
Los secundarios capturan datos del miembro principal para mantener una copia actualizada de los datos de los conjuntos. Sin embargo, por defecto, las secundarias pueden cambiar automáticamente sus objetivos de sincronizar a secundarios en función de los cambios en el tiempo de ping entre nodos y el estado de la replicación de otros nodos. Ver Sincronización de datos del conjunto de réplicas y replicación encadenada autogestionada para obtener más información.
Para algunas implementaciones, implementar una topología de sincronización de replicación personalizada puede ser más efectivo que la lógica de selección de objetivo de sincronización por defecto. MongoDB proporciona la capacidad de especificar un host para usar como objetivo de sincronización.
Para anular temporalmente la lógica de selección del objetivo de sincronización predeterminado, puedes configurar manualmente el objetivo de sincronización de un miembro secundario para extraer temporalmente entradas de oplog. Las siguientes proporcionan acceso a esta funcionalidad:
replSetSyncFromcomando, ors.syncFrom()ayudante enmongosh
Considerations
Limitaciones
Para que replSetSyncFrom/rs.syncFrom() anule el objetivo de sincronización predeterminado, debesettings.chainingAllowed establecerse true en.
Si settings.chainingAllowed está configurado en false, replSetSyncFrom/rs.syncFrom() devuelve ok:1 pero no configura el destino de sincronizar.
A partir de MongoDB 5.0.2, puedes anular settings.chainingAllowed estableciendo el parámetro del servidor enableOverrideClusterChainingSetting en true. Esto permite la sincronización desde un miembro Secundario incluso si settings.chainingAllowed es false.
Lógica de sincronización
Si hay una operación de sincronización inicial en curso cuando se ejecuta replSetSyncFrom/rs.syncFrom(), replSetSyncFrom/rs.syncFrom() detiene la sincronización inicial en curso y reinicia el proceso de sincronización con el nuevo objetivo.
Modifica solamente la lógica de sincronización por defecto cuando sea necesario, y siempre actúa con precaución.
Objetivo
El nodo desde el que se sincroniza debe ser una fuente válida para los datos del conjunto. Para sincronizar desde un nodo, el nodo debe:
Tener datos. No puede ser un árbitro, ni estar en modo de inicio o recuperación, y debe poder responder consultas de datos.
Sé accesible.
Ser nodo del mismo conjunto en la configuración del set de réplicas.
Crear un índice con la configuración
members[n].buildIndexes.Un nodo diferente del conjunto, para evitar la sincronización de sí mismo.
Si intentas replicar desde un nodo que tiene más de 10 segundos de retraso con respecto al nodo actual, mongod registrará un registro de advertencia, pero aún así replicará desde el nodo rezagado. Consulta también atraso de la replicación y control de flujo.
Persistencia
replSetSyncFrom/rs.syncFrom() proporciona una anulación temporal del comportamiento predeterminado. volverá al comportamiento de sincronización predeterminado en las siguientesmongod situaciones:
Procedimiento
Para usar el comando replSetSyncFrom en mongosh:
db.adminCommand( { replSetSyncFrom: "hostname<:port>" } );
Para utilizar el asistente rs.syncFrom() en mongosh:
rs.syncFrom("hostname<:port>");