2012-07-31 20 views
6

Ich habe versucht, eine Master-Slave-Synchronisierung auf einem Debian-Computer einzurichten. Ich bekomme immer, dass Fehler in meinen Logs und ich kann nicht herausfinden, wo die temporäre Datei sollte =/Speicherort der Redis 'Temp-Datei für die Replikation?

[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 

hoffe, euch kann mir helfen :)

Antwort

7

Wahrscheinlich hat der Benutzer, der den Prozess redis-server ausführt, keinen Zugriff auf das Arbeitsverzeichnis.

Überprüfen Sie Ihre redis.conf (in den meisten Fällen /etc/redis.conf) und finden Sie die dir Einstellung (für „Das Arbeitsverzeichnis“ suchen sie und die Dokumentation für sie zu finden), stellen Sie sicher, dass das Verzeichnis vom Benutzer beschreibbar ist redis-server läuft.

+0

Ich weiß, es ist eine alte Nachricht, aber für mich war das Problem in der sentinel.conf, wo der temporäre Verzeichnispfad definiert wurde (redis-3.0.1) – mcorbe

6

Tatsächlich ist die vom Master erzeugte Datei an SYNC time ist eine normale Snapshot-Datei (dh rdb-Datei), die am selben Ort geschrieben wird wie jede andere rdb-Datei.

Dieser Speicherort wird in der Redis-Konfigurationsdatei der Master-Instanz festgelegt - siehe Parameter dir und dbfilename.

Zum Beispiel zu erzeugen Deponien in /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 

Natürlich wird der Benutzer Redis für richtige Zugriffsrechte ins Leben gerufen muß auf dieser Seite hat.

Jetzt, auf der Slave-Seite, wird die vom Master gelesene Dump-Datei in eine temporäre Datei kopiert, deren Name etwa temp-% d.% Ld.rdb ist (einschließlich Zeitstempel und PID). Die Datei wird im Arbeitsverzeichnis erstellt, die dem Parameter dir in der Konfiguration der Slave-Instanz entspricht. Auch wenn RDB nicht auf der Slave-Seite aktiv ist, muss der Parameter dir korrekt eingestellt sein und auf ein Verzeichnis mit geeigneten Zugriffsrechten zeigen.