redis replication

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