2012-07-31 13 views
6

Intenté configurar una sincronización Master-Slave en una máquina Debian. Siempre tengo ese error en los registros de mi y no puedo averiguar dónde está el archivo temporal debe ser =/¿Ubicación del archivo temporal de Redis para la replicación?

[9559] 31 Jul 11:48:17 * Connecting to MASTER... 
[9559] 31 Jul 11:48:17 * MASTER <-> SLAVE sync started 
[9559] 31 Jul 11:48:17 * Non blocking connect for SYNC fired the event. 
[9559] 31 Jul 11:48:22 # Opening the temp file needed for MASTER <-> SLAVE synchronization: Permission denied 

Espero que ustedes me puede ayudar :)

Respuesta

7

Es muy probable que el usuario que ejecuta el proceso redis-server no tenga acceso al directorio de trabajo.

Compruebe su redis.conf (en la mayoría de los casos /etc/redis.conf) y encontrar el ajuste dir (búsqueda de "El directorio de trabajo" para encontrarlo y la documentación para ella), asegúrese de que el directorio es escribible por el usuario que ejecuta redis-server.

+0

Sé que es un mensaje antiguo, pero para mí el problema estaba en sentinel.conf donde estaba definida la ruta del directorio temporal (redis-3.0.1) – mcorbe

6

En realidad, el archivo generado por el maestro en La hora SYNC es un archivo de instantánea normal (es decir, un archivo rdb), escrito en la misma ubicación que cualquier otro archivo rdb.

Esta ubicación se establece en el archivo de configuración Redis de la instancia maestra; consulte los parámetros dir y dbfilename.

Por ejemplo para generar volcados en /data/redis/dump.rdb

# The filename where to dump the DB 
dbfilename dump.rdb 

# The working directory. 
# 
# The DB will be written inside this directory, with the filename specified 
# above using the 'dbfilename' configuration directive. 
# 
# Also the Append Only File will be created inside this directory. 
# 
# Note that you must specify a directory here, not a file name. 
dir /data/redis 

Por supuesto, el usuario se pone en marcha para Redis debe tener derechos de acceso adecuado a esta ubicación.

Ahora, en el lado del esclavo, el archivo de volcado leído del maestro se copia en un archivo temporal, cuyo nombre es algo así como temp-% d.% Ld.rdb (incluyendo una marca de tiempo y pid). El archivo se crea en el directorio de trabajo, que corresponde al parámetro dir en la configuración de la instancia esclava. Entonces, incluso si RDB no está activo en el lado del esclavo, el parámetro dir debe estar configurado correctamente y apuntar a un directorio con los derechos de acceso adecuados.

Cuestiones relacionadas