Erste Schritte mit redis: Umstellen auf AOF -> Daten kaputt ?

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Erste Schritte mit redis: Umstellen auf AOF -> Daten kaputt ?

Beitrag von heisenberg » 24.01.2024 09:07:26

Im Debian-Quatscher (#p1352272) habe ich schon geschrieben, dass ich gerade etwas mit Debianredis rumspiele.

Ich lerne gerade, wie das mit Redis und Persistenz funktioniert (Ich habe mir [1] durchgelesen):

Es gibt da zwei grundsätzliche Möglichkeiten:
  1. Regelmässige Dumps machen lassen. Das lässt sich recht flexibel einstellen. Es ist auf der anderen Seite aber bei größeren Datenbanken vielleicht nicht so praktikabel, immer einen Full Dump durchzuführen.
  2. Append-Only-Files schreiben lassen. Dass sind dann Transaktionsprotokolle, die dann jedes Update auf dem Datenträger speichern. Dabei kann man auswählen, wie häufig der FSync stattfindet. Default-Einstellung ist 1 x pro Sekunde. Dass soll immer noch sehr schnell gehen. Wer es noch sicherer haben will, der kann das nach jedem einzelnen Write machen lassen. Das ist dann sicher wie klassische Datenbanken (postgres/mysql), aber auch die langsamste Variante.
Grundsätzlich habe ich beschlossen Redis zu mögen, weil es sehr einfach zu konfigurieren ist. Bzgl. der Persistenzstrategien will ich jetzt beides haben, AOF + Dumps. Die Dumps dann für den Anfang 1 / Stunde.

---

Allerdings habe ich jetzt das Problem, sobald ich AOF einschalte, ist mein Forum (nodebb) - dass Redis als Datenspeicher benutzt - kaputt. Ich habe die Umstellung auf AOF wie folgt erledigt:
  1. Forum heruntergefahren (nodebb stop)
  2. Redis heruntergefahren (systemctl stop redis-server)
  3. AOF aktiviert (appendonly -> yes)
  4. Redis hochgefahren (systemctl start redis-server)
  5. Forum hochgefahren (nodebb start)
Wenn ich das ganze wieder rückgängig mache und den static Dump (dump.rdb) von redis wieder einspiele, sind die Daten wieder da.

In /var/log/redis/redis-server.log sind keine Fehlermeldungen oder Warnungen.

Hat jemand eine Idee?

Umgebung: Debian Bookworm/LXC

Das ist meine redis.conf (Im Wesentlichen die Debian-Vorgabekonfiguration):

Code: Alles auswählen

bind 127.0.0.1 -::1
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
pidfile /run/redis/redis-server.pid
loglevel notice
logfile /var/log/redis/redis-server.log
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"

# CHANGED - save dump hourly if at least one record has been written.
save 3600 1

stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir /var/lib/redis
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-diskless-sync-max-replicas 0
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
requirepass ldsfjkldsfjdslkfls
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes

# CHANGED
appendonly yes

appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
aof-timestamp-enabled no
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-listpack-entries 512
hash-max-listpack-value 64
list-max-listpack-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-listpack-entries 128
zset-max-listpack-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
[1] https://redis.io/docs/management/persistence/
Zuletzt geändert von heisenberg am 24.01.2024 11:31:21, insgesamt 2-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Erste Schritte mit Redis: Umstellen auf AOF -> Daten kaputt ?

Beitrag von heisenberg » 24.01.2024 09:25:47

Ok. Ich habe jetzt etwas ausprobiert, womit die Umstellung auf AOF funktioniert hat:

Ich habe mich per redis-cli verbunden und die AOF live eingeschaltet:

Code: Alles auswählen

redis-cli -a 'mypassword'
config set appendonly yes
quit
Danach "appendonly yes" in /etc/redis/redis.conf eingetragen, Dienst redis-server durchgestartet per systemctl (nodebb vorher natürlich angehalten und hinterher wieder gestartet) und damit läuft das jetzt.

Edit: Das steht auch auf der oben erwähnten Seite zu redis uns Persistenz. Ich habe nur nicht bis zu Ende gelesen.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Antworten