Nextcloud: Migration der Datenbank von MySQL/MariaDB auf PostgreSQL

Nextcloud PostgreSQL Logo

PostgreSQL ist ein Datenbank-System, welches mittlerweile von vielen verschiedenen Programmen genutzt wird (z.B. Matrix Synapse, Mastodon, oder auch PeerTube). Im direkten Vergleich zu MySQL/MariaDB ist PostgreSQL ein moderneres, objektrelationales Datenbankmanagementsystem (ORDBMS). MySQL/MariaDB sind lediglich relationale Datenbanksysteme (RDBMS). Nicht zuletzt ist PostgreSQL in den meisten Fällen performanter als MySQL/MariaDB.

Da ich mit PostgreSQL schon in einigen Projekten einsetzen konnte, bin ich mittlerweile ein Fan dieses Datenbanksystems. Nextcloud unterstützt neben MySQL/MariaDB ebenso PostgreSQL. Auch hier merkt man Änderungen: Die „Schwuppdiziät“ der Cloud ist mit PostgreSQL um einiges besser.

Da meine Empfehlung in den vergangenen Artikeln immer eher in Richtung MariaDB als Datenbanksystem für Nextcloud gegangen sind, soll dieser Artikel die Migration der Datenbank von MySQL/MariaDB auf PostgreSQL beschreiben.

Als Grundlage dient wie immer der Artikel Nextcloud auf Ubuntu Server 20.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban.

Übrigens kann eine Datenbank-Migration nicht nur „in einer Richtung“ durchgeführt werden, sondern es kann eine Migration in jedes von Nextcloud unterstütze Datenbank-System (MySQL/MariaDB, PostgreSQL und SQLite) vorgenommen werden.

Installation PostgreSQL

Zunächst muss das Datenbank-System installiert werden. Dazu empfehle ich, die Version aus den offiziellen PostgreSQL-Paketquellen zu nutzen, da die Version, die in den Ubuntu Paketquellen enthalten ist, schon ziemlich alt ist.

Hier wird erst einmal das entsprechende Repository eingebunden:

sudo sh -c 'echo "deb [arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Anschließend muss der Repository-Key noch auf dem System bekannt gemacht werden:

wget -O- https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-archive-keyring.gpg >/dev/null

Nun kann PostgreSQL auch schon installiert werden:

apt update && apt install postgresql

Damit PHP mit PostgreSQL zusammen arbeitet, ist zudem noch ein PHP-Paket nachzuinstallieren:

apt install php-pgsql

Die Installation von PostgreSQL ist damit auch schon abgeschlossen.

Optional kann das PostgreSQL noch auf das jeweilige System optimiert werden. Die Seite PGTune ist hier ein guter Ansatzpunkt.

Nextcloud-Datenbank in PostgreSQL anlegen

Bevor nun die eigentliche Konvertierung gestartet werden kann, muss die Datenbank und ein entsprechender User über die PostgreSQL-Kommandozeile angelegt werden:

sudo -u postgres psql

Folgende Befehle legen nun den Benutzer und die Datenbank an. nextcloud_db und nextcloud_db_user sind hier die beispielhaften Namen der Datenbank bzw. des Benutzers. Ebenso muss ein Passwort für den DB-User angegeben werden:

CREATE USER nextcloud_db_user WITH PASSWORD 'pAsSw0rD';
CREATE DATABASE nextcloud_db TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE nextcloud_db OWNER TO nextcloud_db_user;
GRANT ALL PRIVILEGES ON DATABASE nextcloud_db TO nextcloud_db_user;

Die PostgreSQL-Kommanozeile wird daraufhin durch folgenden Befehl beendet:

\q

Damit ist die Datenbank schon für die Migration vorbereitet.

Nextcloud-Datenbank migrieren

Bevor die Datenbank-Migration angestoßen wird, sollte in jedem Fall ein Backup der kompletten Nextcloud-Instanz angefertigt werden. Bei der Migration kann es normalerweise nicht passieren, dass die Nextcloud „zerschossen“ wird, aber man weiß ja nie. Für das Backup können z.B. die bekannten Nextcloud Backup-/ und Restore-Skripte verwendet werden.

Die eigentliche Konvertierung wird nun mit einem OCC-Befehl angestoßen:

sudo -u www-data php occ db:convert-type --all-apps --password="pAsSw0rD" pgsql nextcloud_db_user 127.0.0.1 nextcloud_db

Hier sind folgende Parameter zu beachten:

  • –all-apps: Sorgt dafür, dass auch die Tabellen deaktivierter Apps konvertiert werden.
  • –password: Das Passwort des Nextcloud-Datenbank-Benutzers wie es bei der Anlage der Datenbank angegeben wurde.
  • pgsql: Es soll eine Konvertierung nach PostgreSQL stattfinden
  • Am Ende werden noch der Datenbank-Benutzer, die IP des Zielsystems (in diesem Fall localhost, also 127.0.0.1) und der Name der Datenbank selbst angegeben. Diese Angaben müssen natürlich wieder mit jenen übereinstimmen, die bei der Anlage der Datenbank genutzt wurden.

Nach dem Anlegen des Datenbank-Schemas wird man nun nochmal gefragt, ob man die Migration nun durchführen möchte. Die anschließenden Schritte können nun eine ganze Weile dauern, es wird aber immer eine Fortschrittsanzeige angezeigt.

Wenn der Vorgang abgeschlossen ist, sollte die Cloud wieder wie gewohnt verfügbar sein. Nun lohnt ein Blick in die Admin-Settings unter System: Hier sollte nun im Bereich Datenbank die Nutzung von PostgreSQL angezeigt werden:

PostgreSQL wird als Datenbank-System für Nextcloud genutzt
PostgreSQL wird als Datenbank-System für Nextcloud genutzt

Damit ist die Migration der Datenbank abgeschlossen. Es kann aber nicht schaden, alle Apps auf Funktionstüchtigkeit zu prüfen.

MariaDB/MySQL Datenbank löschen

Wenn es bei der Datenbank-Migration keine Probleme gab, wird die alte MariaDB/MySQL-Datenbank nicht mehr benötigt und kann daher gelöscht werden. Ich empfehle, mit diesem Schritt etwas abzuwarten und die Datenbank erst zu löschen, wenn sicher gestellt ist, dass die eigene Nextcloud-Instanz problemlos mit PostgreSQL funktioniert.

Um die alte Datenbank zu löschen, wird die MySQL-Kommandozeile genutzt:

mysql -u root -p

Nach der Eingabe des Passworts des root-Benutzers der Datenbank werden die Nextcloud-Datenbank und der dazugehörige User entfernt:

drop database nextcloud_db;
drop user nextcloud_db_user@localhost;
exit

nextcloud_db und nextcloud_db_user sind hier wieder durch die Namen der Datenbank bzw. des Users zu ersetzen, die bei der ursprünglichen Installation angegeben wurden.

Troubleshooting

Es kann passieren, dass es bei der Konvertierung zu Fehlern kommt. Meistens sind davon die Tabellen bestimmter Apps betroffen, wie im folgenden Screenshot (hier war die „News“ App der Übeltäter):

Nextcloud: Fehler bei der Datenbank-Konvertierung
Nextcloud: Fehler bei der Datenbank-Konvertierung

Keine Panik: Wenn die Migration auf einen Fehler stößt, bricht diese einfach ab und die alte Datenbank (MySQL/MariaDB) bleibt weiterhin aktiv.

In diesen Fällen (Migration bricht auf Grund einer bestimmten App ab) reicht es aus, die App in der Nextcloud vor der Migration zu deaktivieren. Hier reicht erfahrungsgemäß die Deaktivierung aus, ein Entfernen der App ist meist nicht notwendig.

Anschließend kann die Konvertierung erneut angestoßen werden. Wenn die vorherige Konvertierung jedoch wegen eines Fehlers nicht beendet werden konnte, ist die PostgreSQL-Datenbank schon z.T. gefüllt. Bevor eine erneute Konvertierung gestartet werden kann, muss zuvor die Datenbank und der dazugehörige User manuell aus der Datenbank entfernt werden. Dies geschieht wiederum über die PostgreSQL-Kommandozeile:

sudo -u postgres psql

Folgende Befehle sind zum Löschen zu verwenden:

DROP DATABASE nextcloud_db;
DROP USER nextcloud_db_user;

Anschließend können (immer noch in der gleichen Kommandozeilen-Sitzung) der Benutzer und die Datenbank neu angelegt werden (siehe oben).

Beendet wird die PostgreSQL-Kommandozeile wieder durch den Befehl \q.

Fazit

Nach der Migration auf PostgreSQL als Nextcloud-Datenbank sollte man schon recht schnell einen Performance-Gewinn in der Cloud feststellen können. Erfahrungsgemäß profitieren davon sowohl größere, als auch kleinere Nextcloud-Instanzen.

Was meint ihr zu diesem Thema? Habt ihr bereits Erfahrungen bzgl. PostgreSQL als Datenbanksystem für Nextcloud? Oder bleibt ihr doch bei der „traditionellen Variante“ mit MySSQL/MariaDB? Hinterlasst mir dazu doch einfach einen Kommentar.

Weiterführende Artikel

Links

64 Kommentare zu „Nextcloud: Migration der Datenbank von MySQL/MariaDB auf PostgreSQL“

  1. Hallo Jan,

    und wieder ein toller Blog, vielen Dank dafür.

    PostgreSQL habe ich mir bis jetzt noch nicht angeschaut, eher MariaDB und beruflich Microsoft SQL.

    Ich werde mir mal PostgreSQL auf einer VM genauer anschauen.

    Gruß Hans

  2. Hallo Jan,

    hätte hier eine Frage bevor ich die Migration in Angriff nehme, muss eigentlich auch das Backup Script das Du in Deinem Forum für die Nextcloud vorgestellt hast angepasst werden.

    1. Hallo Thomas,

      ich glaube du musst im Skript die Variable databaseSystem von „mariadb“ auf „postgresql“ ändern. Der Rest ist glaube ich dynamisch.

      1. Hi Mark und Thomas,

        ganz genau: Die Skripte sind sowohl mit MySQL/MariaDB, als auch mit PostgreSQL kompatibel. Hier muss nur die Art des DB-Systems in der entsprechenden Variable mit angegeben werden. DB-Benutzername bzw. -Passwort sind ggf. auch noch zu ändern, wenn diese bei der Migration geändert wurden.

        Gruß,
        Jan

    1. Hi Martin,

      wenn keine andere Anwendung MariaDB/MySQL nutzt, dann ja. Ich würde aber erst einmal den entsprechenden Dienst deaktivieren und schauen, ob nicht doch eine Anwendung meckert.

      Gruß,
      Jan

  3. Wie viele Nutzer willst du eigentlich OneDrive und GDrive durch für alle Verständliche und zugängliche Nextcloud Tutorials abjagen ?
    Jan: JA ! :D
    Danke für die Tutorials, nach der Klausurenphase wird erstmal die Nextcloud neu aufgesetzt

  4. Hallo Jan,

    wollte mich jetzt auch mal an die Konvertierung setzen.

    Nach der Erstellung der Datenbank wollte ich die Konvertierung starten. Mit dem occ Konvertierungsbefehl erhalte ich folgende Fehlermeldung.

    Failed to connect to the database: An exception occurred in the driver: could not find driver

    Scheinbar muss ich php noch beibringen, dass eine PostgreSQL genutzt werden soll.

    Wie kann ich den Fehle beheben? Eine rudimentäte Google Suche hat mir nichts gebracht.

    Ein Neustart hat leider auch nichts gebracht.

    Gruß
    Hans

  5. Der OCC-Befehl zur eigentlichen Konvertierung wurde bei mir sofort mit einer Fehlermeldung der bash abgebrochen.

    Ich musste mit set +H die History-Substitution bzw. -Expandierung setzten, damit der Befehl erfolgreich ausgeführt werden konnte.

    Vielen Dank für die gute und sehr nützliche Anleitung!

      1. Hi Jan,
        die ursprüngliche Fehlermeldung war „bash: !84: event not found“. Nach dem Setzen der History-Expandierung mit „set +H“ konnte ich den Befehl dann ohne weitere Schwierigkeiten ausführen.

        1. Hi Chris,

          hier vermute ich mal, dass ein Passwort o.ä. Sonderzeichen enthalten hat, welche die Bash als Befehl interpretieren wollte. Hast du all diese Sachen in Anführungszeichen gesetzt?

          Gruß,
          Jan

          1. Hallo Jan,
            es kann ja eigentlich nur das Passwort gewesen sein, dieses war allerdings natürlich im Befehl in Anführungszeichen gesetzt, wie du es ja auch beispielhaft oben erklärst. Immerhin hat es mit diesem Workaround gut funktioniert.

  6. Vielen Dank für das Tutorial.
    Der Switch zu postgres hat bei mir reibungslos funktioniert.
    Nur leider erzeugt postgres dauerfaft eine fast Vollauslastung der CPU.
    Woher kann das kommen?

    1. Hi,

      eine hohe CPU-Last ist mir hier noch nicht untergekommen. Hast du irgend etwas an der Konfiguration von PostgreSQL geändert?
      Ansonsten gibt es hier ein paar Tipps, wie man solche Probleme analysieren kann.

      Gruß,
      Jan

  7. Vielen Dank für die tolle Anleitung! Es hat alles geklappt. Kann ich, nachdem die alte Datenbank gelöscht ist, zudem noch Programme löschen, die ich nach deiner Anleitung damals installiert hatte oder wird weiterhin alles benötigt?

    1. Hi,

      wenn MariaDB gar nicht mehr benötigt wird, kannst du MariaDB komplett vom System entfernen. Ich würde allerdings empfehlen, fürs erste den MariaDB-Service erst einmal zu stoppen und zu deaktivieren. Wenn dann auch nach einigen Tagen kein Programm meckert, dann wird MariaDB wohl echt nicht mehr benötigt.

      Gruß,
      Jan

  8. Hi, und danke für die gute Erklärung.
    Bei uns wurde die Migration auf Grund von den oben beschriebenen „App“Fehlern abgebrochen, so dass wir uns nochmal genauer anschauen müssen, welche Apps die verursacher sind.
    Aber mit PostgreSQL betreiben wir bereits eine andere Nexctloud Instanz auf einem anderen Server seit über einem Jahr und hatten bis jetzt nie Probleme damit. Deshalb wollten wir auch die Nextcloud von einem Kunden zu Postgresql migrieren. Die Performace von Nextcloud mit Postgresql ist (subjektiv) gefühlt besser als mit einer Mysql Variante.
    Grüße!

    1. Hi,

      danke für das Feedback.
      Bzgl. der „App-Fehler“: Hier sollte eigentlich schon aus den Tabellennamen hervorgehen, um welche App(s) es sich handelt. Zumindest sollte daraus ein Hinweis abzulesen sein.

      Gruß,
      Jan

  9. Hi Jan,

    wieder mal vielen Dank für die tolle Anleitung!
    Nachdem ich den Hinweis bekommen hatte, dass es für meine MariaDB 10.4 keine Updates mehr gibt, habe ich die Migration gewagt und konnte nach ein paar Stunden noch keine Fehler feststellen.

    Viele Grüße
    Martin

    1. Hi Martin,

      wenn es bei der Migration selbst zu keinen Problemen gekommen ist, dann werden erfahrungsgemäß auch in der weiteren Nutzung der Cloud keine weiteren Probleme entstehen (außer z.B. man installiert zu PostgreSQL inkompatible Apps).
      Merkst du einen Unterschied bei der Performance?

      Gruß,
      Jan

      1. Hi Jan,

        ehrlich gesagt, merke ich noch keinen Unterscheid und habe sogar das Gefühl, dass es „hakeliger“ läuft. Mir ist eben auch erst aufgefallen, dass der Nextcloud angeblich nach der Installation von PostgrSQL ‚imagick‘ fehlt. Die Installation mit ‚apt install php-imagick imagemagick‘ wirft aber aus, dass alles bereits vorhanden ist!
        Ich weiß nicht, ob das noch ein Performance-Problem darstellt, aber damit kämpfe ich gerade. Irgendeine Idee?

        Grüße
        Martin

        1. Hi Martin,

          dass es hakeliger läuft konnte ich bisher noch bei keiner Instanz beobachten. Du kannst hier noch versuchen, die PostgeSQL-Konfiguration zu optimieren, siehe hier.
          Für die Imagemagick-Sachen: apt install imagemagick libmagickcore-6.q16-6-extra sollte hier Abhilfe schaffen. Das liegt aber nicht an PostgreSQL, hast du vielleicht im gleichen Atemzug Nextcloud upgedatet?

          Gruß,
          Jan

  10. Hi Jan,

    ja, ich gehe auch davon aus, dass es mit gleichzeitigen Updates zu tun hat.
    Leider hat auch Dein Tipp in diesem Fall nichts gebracht (bereits installiert).
    Keine Ahnung, was die NC noch erwartet. Ein Entfernen mit „remove“ und erneutes Installieren hat leider auch nichts gebracht. Oder muss ich vielleicht es mit „purge“ versuchen?

    Grüße
    Martin

      1. Hi Jan,

        die Fehlermeldung in der NC 22.2.2 lautet:
        „Dieser Installation fehlen einige empfohlene PHP-Module. Für bessere Leistung und bessere Kompatibilität wird dringend empfohlen, diese zu installieren.

        – imagick“

        Linux-Distribution/Version:
        Linux version 5.4.0-90-generic (buildd@lgw01-amd64-054) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04))

        Der Server wurde mit Deiner Anleitung ‚Nextcloud auf Ubuntu Server 20.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban‘ aufgesetzt.

        Die installierte imagick-Version:
        ImageMagick 6.9.10-23 Q16 x86_64 20190101

        Danke!

        Grüße
        Martin

          1. Hi Jan,

            ja, das ist das Problem. Wenn ich versuche php-imagick zu installieren, ist es bereits installiert:
            „php-imagick is already the newest version (3.5.1-2+ubuntu20.04.1+deb.sury.org+3)“

            Gruß
            Martin

          2. Hi Martin,

            ok, du hast PHP aus einem PPA installiert. Hier wird aber meistens recht viel Zeug installiert (mehrere PHP-Versionen), ich würde es nochmal mit einem apt install php7.3-imagick versuchen (je nach PHP-Version anpassen).

            Letzten Endes ist es aber die Theming App, die diese Warnung verursacht. Wenn du also kein Theming nutzt, kannst du die App einfach deaktivieren und die Meldung sollte dann auch verschwunden sein.

            Gruß,
            Jan

          3. Hi Jan,
            vielen Dank, mit ‚install php8.0-imagick‘ (oder der Deaktivierung der Theming-App) war das Problem gelöst!
            Viele Grüße
            Martin

  11. Hallo Jan,
    ich habe eine Frage zum Nextcloud Backup-Skript. Kannst Du mir einen Tipp geben wie ich im Skript eine Rotation einbauen kann. Sprich das nur maximal fünf Verzeichnisse angelegt werden? Z. B. mit folgenden Code:

    # Rotate Backups
    max_number_of_backups=2

    function number_of_backups() {
    echo `ls -1 $BACKUPDIR | wc -l`
    }

    function oldest_backup() {
    echo -n `ls -1 $BACKUPDIR | head -1`
    }

    while [ $(number_of_backups) -gt $max_number_of_backups ]
    do
    rm -rf „$BACKUPDIR/$(oldest_backup)“
    done

    Mit freundlichen Grüßen
    Stefan Harbich

      1. Hi Jan,

        ich habe das Skript am Ende Deines Skript eingefügt und die Variable $BACKUPDIR mit der Variablen $backupMainDir geändert. Allerdings funktioniert das Skript nicht. Hast Du noch einen Tipp?

        Gruß von Stefan

        1. Hi Stefan,

          warum hast du das Skript erweitert? Wenn ich das richtig verstanden habe, macht das originaler Skript doch schon genau das, was du möchtest. Einfach die Variable „maxNrOfBackups“ auf den gewünschten Wert setzen und es wird nur diese Anzahl an Backups behalten.

          Gruß,
          Jan

  12. Hallo Jan,
    bei der Konvertierung der Datenbank bekomme ich folgende Fehlermeldung:

    root@dsme01:/var/www/html/nextcloud# sudo -u www-data php occ db:convert-type –all-apps –password=“#########“ pgsql nextcloud 127.0.0.1 nextcloud
    Creating schema in new database

    In Connection.php line 87:

    Failed to connect to the database: An exception occurred in the driver: SQLSTATE[08006] [7] received invalid response to SSL negotiation: g

    db:convert-type [–port PORT] [–password PASSWORD] [–clear-schema] [–all-apps] [–chunk-size CHUNK-SIZE] [–]

    Hast Du einen Tipp für mich woran das liegen kann?

    Mit freundlichen Grüßen
    Stefan harbich

    1. Hi Stefan,

      das Paket „php-pgsql“ hast du installiert und die PostgreSQL-DB vor der Konvertierung angelegt?
      Läuft PostgreSQL auf Port 5432? Wenn nicht, dann musst du vermutlich den Port noch mit dem Parameter „port“ mit angeben.

      Gruß,
      Jan

    2. Überprüfe mal in der postgresql.conf die Zeile „listen_addresses“ und kommentiere diese probeweise aus. Solange die DB und die Nextcloud auf demselben Server laufen, sollte das kein Problem darstellen.

  13. leider ist das migrieren mit den NC Befehlen schnarch langsam (app sagte was von 18h an), ich hab das ganze mit pgloader gemacht, das war dann innerhalb von minuten erledigt

    1. Hi Stefan,

      danke für den Hinweis. Die Migration dauert schon verhältnismäßig lange, aber 18 Stunden? Wie groß ist deine Datenbank wenn ich fragen darf?

      Gruß,
      Jan

  14. Hallo Jan,
    beim gestrigen PostgreSQL-Update habe ich folgende Meldung bekommen:
    „Postgre-14 (14.4-1) unstable(?!) ; urgency=medium
    If [RE]INDEX with the CONCURRENTLY option was used on any PostgreSQL 14 database, it is recommended to rebuild the indexes.“
    Ich frage mich nun, wie ich herausfinden kann, ob ich betroffen bin. Ich bin vor einiger mit Deiner Anleitung auf PostgreSQL gewechselt. Kannst Du so schon sagen, ob ich etwas unternehmen muss?

    Vielen Dank!

    Grüße
    Martin

    1. Nachtrag:
      Ich vermute, dass ich nichts unternehmen muss, da ich in den Versionen 14.x keine reindizierung durchgeführt hatte:
      https://www.migops.com/blog/important-postgresql-14-update-to-avoid-silent-corruption-of-indexes/

      Siehe letzter Satz:
      „The problem was introduced in PostgreSQL 14 by a VACUUM improvement to ignore certain transactions that are executing CREATE INDEX CONCURRENTLY and REINDEX CONCURRENTLY. These changes caused the indexes created with the CONCURRENTLY option to miss heap tuples that were HOT-updated and HOT-pruned during the index creation. CONCURRENTLY is generally used to rebuild or create an Index online without an Access Exclusive lock on its table.

      The cause of the silent data corruption in indexes is an existing issue in the concurrent build of indexes using CREATE INDEX CONCURRENTLY or REINDEX CONCURRENTLY. This leaves the newly rebuilt Indexes to remain in a silently corrupted state. Your databases with PostgreSQL 14 are impacted if you have run such Index rebuild commands.“

      1. Hi Martin,

        „CREATE/REINDEX INDEX CONCURRENTLY“ sagt mir nun auch erst einmal nichts, also explizit habe ich das in keinem Artikel durchgeführt. Daher gehe ich mal davon aus, dass nichts weiter zu tun ist.
        Im von dir verlinkten Artikel ist aber auch genau beschrieben, wie man testen kann, ob man betroffen ist. Hast du diese Tests schon ausgeführt?

        Gruß,
        Jan

        1. Hi Jan,

          sagen wir mal so: Ich hab’s versucht, bin aber nicht wirklich sicher, was ich tun muss :).
          Ich habe mich in PostgreSQL angemeldet und nacheinander die folgenden Befehle abgesetzt:

          — Create the extension
          psql -d nextcloud_db -c „CREATE EXTENSION amcheck“

          — To check all b-tree indexes of tables with a pattern
          pg_amcheck -d nextcloud_db –relation pattern –heapallindexed

          — To check all b-tree indexes matching this pattern
          pg_amcheck -d nextcloud_db –index pattern –heapallindexed

          Es gab aber Null Feedback, ob überhaupt irgendwas durchgeführt wurde.

          Grüße
          Martin

          1. Hi Martin,

            wenn hier nichts kommt, dann würde ich das mal so interpretieren, dass du nicht betroffen bist.

            Gruß,
            Jan

  15. Hi. Tolle Anleitung, Danke!.
    Nachdem ich mit einer ganz frischen Nextcloud Installation Probleme hatte die offenbar mit der MariaDB zu tun hatte (ungefähr einmal am Tag war die Webseite nicht mehr erreichbar, nur ein Neustart der MariaDB half) hoffe ich das nach dieser Umstellung alles stabil läuft.
    Hinweis: Mir fehlte am Ende noch die Info das man die PHP.ini von Nextcloud noch anpassen muss und dort die neue Datenbank hinterlegen muss.
    Das ist natürlich logisch, aber für viele vielleicht ein entscheidender Hinweis!
    VG Basti

      1. Wichtig: Auch die 20-pgsql.ini muss bearbeitet werden.

        nano /etc/php/8.1/fpm/conf.d/20-pgsql.ini

        Folgenden Inhalt einfügen:

        ; configuration for php pgsql module
        ; priority=20
        # configuration for PHP PostgreSQL module
        extension=pdo_pgsql
        extension=pgsql.so

        [PostgresSQL]
        pgsql.allow_persistent = On
        pgsql.auto_reset_persistent = Off
        pgsql.max_persistent = -1
        pgsql.max_links = -1
        pgsql.ignore_notice = 0
        pgsql.log_notice = 0

        Zum Thema der Indexproblematik bei den ersten Versionen der 14.x Reihe: Ich habe die REINDEX durchgeführt, indem ich wie beim Upgrade auf eine neue Hauptversion einen Dump angelegt habe, die alte Datenbank gelöscht und schließlich den Dump neu eingelesen. Dabei werden automatisch Überreate beseitigt und ein REINDEX durchgeführt. In meinem Fall war die Datenbank danach um 400MB kleiner!

        Dann möchte ich noch erwähnen, dass die neue Hauptversion 15.x noch nicht offiziell mit der Nextcloud funktioniert. Für NC 25.0.2 läuft die Entwicklung für die entsprechende Kompatibilität. Unter 24.0.7 habe ich zwar PostgreSQL 15.2 laufen, das Upgrade auf 25.0.1 scheitert aber genau an der fehlenden Kompatibilität.
        LG Chris

        1. Hi Chris,

          also die von dir genannte ini-Datei musste ich bisher noch nicht bearbeiten. Welche Nachteile hast du, wenn du die Datei nicht bearbeitest?

          Das mit PostgreSQL 15 und NC 25 kann ich so nicht bestätigen: Auf einer Test-Instanz läuft NC 25.0.1 mit PostgreSQL 15.1 und ich konnte bisher noch keine Probleme feststellen. Hast du hier vielleicht mal einen Link für mich?

          Gruß,
          Jan

          1. Der Eintrag der 20-pgsql.ini hat bei mir Probleme mit der Zuverlässigkeit und Performance im Zusammenhang mit hohen Nutzerzahlen behoben (1000 Nutzer insgesamt; >300 gleichzeitig). Daher nehme ich an, dass diese Konfiguration schon wichtig ist. Hinterlegt ist die Info dazu hier: https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/linux_database_configuration.html#postgresql-database

            Offizieller Support für PostgreSQL 15.x kommt erst mit NC 25.0.2: https://github.com/nextcloud/server/pull/35135

            Man findet einige Fälle mit gescheiterten Upgrades von 24.0.6 oder 24.0.7 auf 25.0.x. Eine Neuinstallation von 25.0.1 mit PostgreSQL 15.1 dagegen gelingt wohl.

            LG
            Chris

  16. Kleiner Tipp falls SSH Sitzung möglicherweise wegbrechen könnte und weil die Migration ja bei fast allen ewig dauert: Startet die Sitzung in einen Sitzungsmanager wie tmux oder screen und startet die Migration in dieser Sitzung.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert