esclavo redis no se sincronizará con el maestro
replication (7)
El esclavo redis no se sincronizará con el maestro.
Conectividad
Puedo conectarme al master cuando emito
HOST_NAME=fakehost
redis-cli -h $HOST_NAME
y verifique el estado del maestro usando un comando como INFO
, de modo que la conectividad no sea un problema.
Configuraciones:
De la caja de esclavos, emití
SLAVEOF $HOST_NAME 6379
Y recibió un OK
.
Cuando emito el comando INFO
en el esclavo, obtengo
# Replication
role:slave
master_host:<removed>
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
master_link_down_since_seconds:1379450797
slave_priority:100
slave_read_only:1
connected_slaves:0
En la caja maestra, emito info
y obtengo
# Replication
role:master
connected_slaves:0
Así que obviamente no estoy conectado.
Troncos
[11225] 17 Sep 14:31:33.225 * Connecting to MASTER...
[11225] 17 Sep 14:31:33.226 * MASTER <-> SLAVE sync started
[11225] 17 Sep 14:31:33.226 * Non blocking connect for SYNC fired the event.
[11225] 17 Sep 14:31:33.226 * Master replied to PING, replication can continue...
[11225] 17 Sep 14:31:33.227 # MASTER aborted replication with an error: ERR Unable to perform background save
Pruebas
Pruebe que dump.rdb se crea en BGSAVE
BGSAVE
> OK
Prueba que dump.rdb se crea en SAVE
SAVE
> OK
Gracias por adelantado.
En mi caso, estaba relacionado con SELINUX, cambiarlo a modo permisivo resolvió el problema.
Este problema poco complicado,
la razón por la que el esclavo no puede sincronizarse está en el maestro mismo,
preste atención a la salida del registro: MASTER replicación abortada con un error: ERR No se puede realizar el guardado en segundo plano
esto significa que el maestro no puede guardar en segundo plano debido a la baja reserva de memoria en la máquina maestra,
Para resolver este problema reinicié el servidor redis maestro, entonces todos los esclavos se sincronizaron por sí mismos.
He encontrado el mismo problema, y mi razón es que mis dos servidores no usan la misma redis version
. Revisemos tu versión en ambos servidores:
127.0.0.1:6379> info server
# Server
redis_version:3.2.8
Me encontré con una situación similar hoy. Parece que para los sistemas que usan sysctl
, es posible que tenga que hacer:
sysctl vm.overcommit_memory=1
y reinicie el servidor redis esclavo. Este enlace puede ayudar.
Para mí, fue porque tenía requirepass
conjunto de requirepass
, pero no configuré una configuración de masterauth
.
mi configuración predeterminada en redis.conf habilitó el requisito de paso, ejecutando "masterauth [passwordOfMaster]" en el terminal del esclavo antes de "SLAVEOF" solucionará este problema.
Lo arreglé lo siguiente :
sudo -i
service redis-server stop
apt remove --purge redis-server
rm /var/lib/redis/dump.rdb
apt install redis-server
systemctl enable redis-server
service redis-server start
# i have not tried, but it is possible this is enough
service redis-server stop
rm /var/lib/redis/dump.rdb
service redis-server start