Die Antwort von ChatGPT wie der Redis ConnectionPool funktioniert. Ein paar Dinge finde ich komisch.
https://chat.openai.com/share/b10fdadc-2c9b-404a-bc99-c883d110d6af
Ich glaube ich habe die letzten zwei Stunden gaaaaanz viel gelernt........
Durch einen dummen Fehler ist mir unerwartet der Redis-Server abhanden gekommen Die Fehlersuche hat etwas Zeit in Anspruch genommen Die Datensicherung hat aber gut funktioniert - ohne hätte ich jetzt hier in diesem Forum von vorne anfangen können. Es sind manchmal die kleinen Dingen, die einem ganz schön Nerven kosten können. Morgen dann für alle was ausführlicher, was genau passiert ist. Jetzt ab ins Bett...
An die Profis, besser jetzt nicht weiter lesen
Was war passiert? Ich hatte meine Nextcloud Instanz kaputt gemacht (ist ein anderes Thema), bin dann aus irgendeinem Grund auf den Root und habe mal ein
apt update
angestossen. Also, nichts besonderes, so wie immer. Es war schon was später (keine gute Idee) und so habe ich nicht genau hingesehen, was da reinkommt. Es war irgendwas mit zwei libs und redis-server. Und auf Return geklickt. Dann das.
Preparing to unpack .../redis-server_3%3a3.2.6-3+deb9u3_amd64.deb ...
Unpacking redis-server (3:3.2.6-3+deb9u3) over (3:3.2.6-3+deb9u2) ...
Preparing to unpack .../redis-tools_3%3a3.2.6-3+deb9u3_amd64.deb ...
Unpacking redis-tools (3:3.2.6-3+deb9u3) over (3:3.2.6-3+deb9u2) ...
Setting up redis-tools (3:3.2.6-3+deb9u3) ...
Processing triggers for systemd (232-25+deb9u11) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up redis-server (3:3.2.6-3+deb9u3) ...
Job for redis-server.service failed because of unavailable resources or another system error.
See "systemctl status redis-server.service" and "journalctl -xe" for details.
invoke-rc.d: initscript redis-server, action "start" failed.
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: resources) since Tue 2019-07-16 21:59:15 CEST; 3ms ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 23442 ExecStopPost=/bin/run-parts --verbose /etc/redis/redis-server.post-down.d (code=exited, status=0/SUCCESS)
Process: 23439 ExecStop=/bin/kill -s TERM $MAINPID ^[[0;1;31m(code=exited, status=1/FAILURE)^[[0m
Process: 23435 ExecStop=/bin/run-parts --verbose /etc/redis/redis-server.pre-down.d (code=exited, status=0/SUCCESS)
Process: 23430 ExecStartPost=/bin/run-parts --verbose /etc/redis/redis-server.post-up.d (code=exited, status=0/SUCCESS)
Process: 23427 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
Process: 23422 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-server.pre-up.d (code=exited, status=0/SUCCESS)
Main PID: 826 (code=exited, status=0/SUCCESS)
Und Bam, Forum kaputt, Redis-Server läuft nicht mehr. Ich habe dann, vermutlich auch weil ich eigentlich schon ins Bett wollte, etwas gebraucht um überhaupt zu verstehen was da passiert war. Wenn man es geschnallt hat, ist es eigentlich relativ einfach.
Durch die Aktualisierung wurde der Redis-Server auf dem Server aktualisiert. Nur dumm, das das Paket auf dem Server wesentlich aktueller ist, als das was aktualisiert wurde Warum, war das so? Der Redis-Server auf dem Root ist zu alt, so das ich irgendwann in der Anfangszeit der Redis-Server mal selbst gebaut habe. Das war mir in dem Moment aber nicht mehr so klar.
Nachdem es dann Klick gemacht hatte, wusste ich was zu tuen war. Den Redis-Server runterhauen, aktuellen Redis-Server runterladen und bauen. Dann entsprechende Konfig und Datenbank wieder auf den Server schreiben, die Datenbank war nämlich weg! Glück, das mein Backupkonzept funktioniert.
Nach einigen Hürden, ja es war spät, lief das Forum dann wieder. Puuh - Glück gehabt.
Ein gutes Backupkonzept ist absolut notwendig. Ich habe gemerkt, das ich da noch was verbessern kann.
Pakete die man selber baut, muss man daran hindern, das diese aktualisiert werden (Siehe unten)
Wenn es mal knallt, Ruhe bewahren. Man macht sonst nur noch mehr kaputt.
Mit dem Befehl
apt-mark hold redis-server
kann man ein Paket von der Aktualisierung ausnehmen. Eine Liste der Pakete gibt es mit
apt-mark showhold
Damit müsste ich meinen dummen Fehler jetzt eigentlich für die Zukunft verhindert haben.
Wenn hier jemand einen Fehler sieht, bitte ich um freundliche Korrektur. Ich bin mir da nicht so zu 100% sicher, das das was ich da geschrieben habe Sinn macht. Danke!
So, nach einer kleinen Pause und ein wenig nachdenken ist mir doch noch was eingefallen
Backports! Man so einfach!
nano /etc/apt/sources.list
Das folgende eintragen.
# backports
deb http://deb.debian.org/debian stretch-backports main
Danach ein
apt update
Und dann schauen wir uns mal die Version an....
apt -t stretch-backports search redis-server
Sorting... Done
Full Text Search... Done
golang-github-stvp-tempredis-dev/stretch-backports 0.0~git20160122.0.83f7aae-1~bpo9+1 all
Go package to start and stop temporary redis-server processes
libtest-redisserver-perl/oldstable,oldstable 0.20-1 all
redis-server runner for tests
python-hiredis/oldstable,oldstable 0.2.0-1+b2 amd64
redis protocol reader for Python 2.X using hiredis
python3-hiredis/oldstable,oldstable 0.2.0-1+b2 amd64
redis protocol reader for Python using hiredis
redis/stretch-backports 5:5.0.3-3~bpo9+2 all
Persistent key-value database with network interface (metapackage)
redis-server/stretch-backports 5:5.0.3-3~bpo9+2 amd64 [residual-config]
Persistent key-value database with network interface
Und die habe ich gestern Abend gebaut.
127.0.0.1:6379> INFO
# Server
redis_version:5.0.5
Ok, das schmerzt jetzt