replication - remove - test redis cluster
¿Al agregar un esclavo redis emite una llamada de bloqueo al maestro? (1)
el maestro simplemente realizará un BGSAVE en la solicitud SYNC del esclavo, por lo que no es una operación de bloqueo.
Entonces la secuencia es:
- esclavo pide SYNC
- maestro BGSAVE, esclavo espera
- master BGSAVE finalizado, los datos masivos iniciales (el archivo .rdb) se transfieren a esclavo
- maestro acumula todas las nuevas diferencias para el esclavo
- master termina enviando todo el archivo rdb inicial al esclavo
- master start alimenta al esclavo con el buffer acumulado, y con cualquier nuevo que llegue de los clientes, si están escritos.
También funciona si el maestro no está configurado para guardar, simplemente producirá un .rdb solo para la sincronización maestra <-> esclava. En instancias maestras configuradas sin líneas "guardar" en redis.conf, BGSAVE no se llama automáticamente, pero el usuario puede llamarlo si es necesario guardar un archivo .rdb.
No me queda claro, a partir de la documentación sobre replicación, si el comando SYNC está bloqueando.
Parece que no debería ser (después de todo, hacer girar un nuevo esclavo detendría al maestro de atender solicitudes), pero me gustaría confirmarlo.
Para el contexto, estoy buscando agregar un esclavo a un host maestro de aproximadamente 8GB de datos sin sincronización de disco *.
* Históricamente, la pérdida de datos no ha sido una preocupación. Estamos cambiando eso, por lo que la replicación y la persistencia están siendo "respaldadas" en cierta medida.