Fehlende Indizees nach NC Update

Hallo zusammen,
auf Anregung von @devnull stelle ich mein Thema als Extra Thread hier ein:

Wir (Verein) haben eine Nextcloud Instanz auf einem gehosteten Webspace die ich betreue. Die Kombination aus Webspace, eMail und Cloud Lösung ist für uns Ideal und wurde bewusst so entschieden. Für Updates (nur nextcloud) sind wir aber selber verantwortlich. Das hat bisher auch alles gut geklappt.

Nach dem Update auf die 22.2.5 gestern habe ich aber folgende Meldungen:

In der Datenbank fehlen einige Indizes. Auf Grund der Tatsache, dass das Hinzufügen von Indizes in großen Tabellen einige Zeit in Anspruch nehmen kann, wurden diese nicht automatisch erzeugt. Durch das Ausführen von "occ db:add-missing-indices" können die fehlenden Indizes manuell hinzugefügt werden, während die Instanz weiter läuft. Nachdem die Indizes hinzugefügt wurden, sind Anfragen auf die Tabellen normalerweise schneller.

    Fehlender Index "fs_storage_path_prefix" in der Tabelle "nc_2094_filecache".
    Fehlender Index "fs_id_storage_size" in der Tabelle "nc_2094_filecache".
    Fehlender Index "properties_pathonly_index" in der Tabelle "nc_2094_properties".
    Fehlender Index "job_lastcheck_reserved" in der Tabelle "nc_2094_jobs".

Aktuell habe ich noch keinen ssh User auf dem Server (geht technisch), und würde das auch gerne vermeiden. Lt. Aussage des Supports läuft der " occ db:add-missing-indices" aber wohl nur mit dem ssh User. Den an anderer Stelle vorgeschlagenen Versuch die Indizees mit einem cron job zu erstellen habe ich noch nicht unternommen, das Risiko erschien mir zu groß! Einen cron job auf die cron.php habe ich eingerichtet - läuft problemlos.

Mit phpMyAdmin komme ich an die Tabelle, kann aber aus o.g. Beschreibung der Indizees nicht ableiten auf welche Felder diese erstellt werden müssen. Ein System konnte ich nicht erkennen.
Ein Backup der Daten liegt lokal vor, ein Backup der Datenbank ((SQL Datei, 16MB → ist das schon “groß”?) habe ich auch → kann also vorausgesetzt werden. Generell habe ich Erfahrung mit ssh im eigenen Netz, würde aber auf dem Produktivsystem kein unnötiges Risiko eingehen wollen (zumal der Hoster auch aktiv auf das Risiko hinweist).

Die Fragen kann ich wie folgt beantworten:

  • Bei welchen Anbieter? Professionelles, bezahltes und managed webhost Paket
  • nextcloud Installation über den Betreiber (skript), mit eigenen Pflichten zum Update etc. (not managed)
    → meine Entscheidung, hat auch bis zum gestrigen NC Update alles super geklappt, und ich habe bewusst nextcloud statt der managed owncloud genommen :slight_smile:
  • Hardware : Rechenzentrum, unbekannt
  • Betriebssystem: Linux 5.15.25 x86_64 (Gentoo Linux?)
  • Nextcloud Version: 22.2.5.1
  • PHP Version: 7.4.28
  • Welche Datenbank? MariaDBmySQLcompatible (lt. Hoster! mysql 10.2.36 lt. issue template)
  • Apache version, usw.: Apache2Handler (Details unbekannt)
  • Läuft NC in Docker,Snap oder VM : unbekannt → hoster
  • Netzwerk Aufgliederung: zb. Router>Switch>PI> : Rechenzentrum → hoster
  • Wurden vor kurzen Server Updates gemacht? Wenn ja von was? : unbekannt → hoster
  • Habt ihr die Logs angesehen von Nextcloud und von System? → NC leer, Serverlogs nicht verfügbar!
  • Bei was für einer Aktion ist der Fehler aufgetreten? NC Update auf 22.2.5 über Webupdater

Frage ist wie ich jetzt die Indizees richtig und am risikoärmsten erzeuge?

Danke für die Unterstützung
//hufnala

Es gibt eine neue Version der App OCC Web. Die kannst du innerhalb von NC aus dem Appstore saugen und dann damit hoffentlich die Kommandozeile emulieren (aus NC heraus) - dann sollte es möglich sein, die fehlenden Indices mithilfe des bekannten Kommandos nachzutragen.

Im Übrigen sollte der Befehl nicht unter dem SSH-User ausgeführt werden sondern mit dem WEB-User (oftmals ist das www-data:www-data). Versuch macht kluch ;-D

3 Likes

@JimmyKater
Danke für die Info, dass es eine neue Version der App OCC Web gibt. Das wird bestimmt einige Leute hier freuen. Das ist natürlich die weit bessere Lösung als direkt in der Datenbank etwas zu ändern.

Im genannten Fall reicht wahrscheinlich in OCC Web folgende Eingabe:

db:add-missing-indices

SSH-User vs. Webserver-User:
Ich kenne das bei einigen Hosting-Providern so, dass die Webserver- und damit Nextcloud-Instanz unter der eigenen Benutzerkennung läuft. Damit fällt dann das sudo -u www-data weg.

Genau. Daher reicht

php occ db:add-missing-indices

anstatt:

sudo -u www-data php occ db:add-missing-indices

Bei OCC Web fällt dann noch php und occ weg:

db:add-missing-indices

1 Like

Super dass war es, hat sofort und funktioniert. Danke für den Tipp. Vielleicht einfach die App statt den kryptischen Befehl und den Verweis auf sudo, ssh, usw. in den Check einbauen :smile:

Edith hat einen kleinen Nachtrag : Nach dem was die App alles kann müsste ja mit Wartungsmodus usw. auch das Backup deutlich einfacher werden > Wäre das nicht was für ein HowTo? Ich kenne mich leider zu wenig aus, um das anzugehen, sonst würde ich selber loslegen…
Schönes WE
//hufnala

1 Like

Kenne jetzt die OCC Web App nicht, aber bei eingeschaltetem Nextcloud-Wartungsmodus funktionieren üblicherweise die Nextcloud Apps nicht mehr, also möglicherweise auch OCC Web nicht…

1 Like

@JMLatNC @hufnala
Ich denke auch, dass beim Wartunsmodus auch OCC Web nicht mehr funktioniert. :wink:

Der Wartungsmodus kann aber wohl manuell aktiviert und deaktiviert werden. Also somit ist dann nicht alles verloren. Also falls es mal jemand benötigt:

config/config.php:

'maintenance' => true,

oder

'maintenance' => false,

Trotz OCC Web und dieser Möglichkeit rate ich weiterhin vom Einsatz von Nextcloud auf einen normalen Webserver ab. Ich glaube wirklich glücklich wird man damit nicht.

Im übrigen würde ich ein Upgrade dann zur nächsten Version erst machen, wenn auch OCC Web für die neue Version bereitsteht. :wink:

1 Like

Neue Version occ web? Perfekt, das spart mir einiges.