Datenbank
owncloud.online läuft mit MariaDB/MySQL, PostgreSQL oder SQLite. Für den produktiven Betrieb ist MariaDB die getestete Standardvariante. SQLite eignet sich nur für lokale Tests und bricht bei mehreren gleichzeitigen Zugriffen ein.
Empfohlene Einstellungen (MariaDB/MySQL)
Die Datenbank muss utf8mb4 verwenden, sonst scheitern Dateinamen mit Emojis
oder seltenen Zeichen:
CREATE DATABASE owncloud_online
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
In config.php gehört dazu:
'dbtype' => 'mysql',
'mysql.utf8mb4' => true,
Ob eine bestehende Instanz schon umgestellt ist, zeigt dieser Befehl; die
erwartete Ausgabe ist true:
sudo -u www-data php8.4 /var/www/owncloud.online/occ config:system:get mysql.utf8mb4
Umgestellt wird mit db:convert-mysql-charset. Der Befehl prüft zuerst, ob der
Datenbankserver utf8mb4 unterstützt, setzt dann mysql.utf8mb4 in
config.php und stellt alle Tabellen um. Legen Sie vorher eine Sicherung an
und schalten Sie den Wartungsmodus ein:
sudo -u www-data php8.4 /var/www/owncloud.online/occ maintenance:mode --on
sudo -u www-data php8.4 /var/www/owncloud.online/occ db:convert-mysql-charset
sudo -u www-data php8.4 /var/www/owncloud.online/occ maintenance:mode --off
Von SQLite auf MariaDB umstellen
Eine Umwandlung an Ort und Stelle gibt es in dieser Version nicht. Der frühere
Befehl db:convert-type ist entfernt (Changelog: „This experimental command is
untested and unsupported and therefore removed.“). Planen Sie MariaDB deshalb
gleich bei der Installation ein.
Für eine bestehende SQLite-Instanz bleibt nur, mit MariaDB neu aufzusetzen und die Dateien neu einzulesen. Alles, was nur in der Datenbank steht, geht dabei verloren, etwa Freigaben, Kommentare, Tags und App-Einstellungen. Den Ablauf und die vollständige Liste beschreibt Umzug auf einen anderen Server.
Wartung
Indizes und Spalten legt der Server über Migrationen an. Einen eigenen Befehl zum Nachziehen fehlender Indizes gibt es nicht.
# Migrationsstand ansehen ("New Migrations" sollte 0 sein)
sudo -u www-data php8.4 /var/www/owncloud.online/occ migrations:status core
# ausstehende Migrationen bis zum neuesten Stand ausführen
sudo -u www-data php8.4 /var/www/owncloud.online/occ migrations:migrate core
# einzelne Migration nachziehen
sudo -u www-data php8.4 /var/www/owncloud.online/occ migrations:execute core <Version>
Nach einem Wechsel auf MariaDB 10.6 oder neuer stellt
db:restore-default-row-format alle Tabellen, deren Zeilenformat vom Standard
des Servers abweicht (etwa das veraltete COMPRESSED), auf das Standardformat
um:
sudo -u www-data php8.4 /var/www/owncloud.online/occ db:restore-default-row-format
Migrationen nach jedem Update
Nach einem Code-Update muss occ upgrade laufen. Fehlen die Migrationen,
erwartet der Code Spalten, die es in der Datenbank noch nicht gibt. Die
Instanz antwortet dann an einzelnen Stellen mit Fehler 500. Siehe
Serverprotokoll und Fehlermeldungen.
Backup und Wiederherstellung
# Sicherung
mkdir -p /var/backups/owncloud.online
mysqldump --single-transaction -u root -p owncloud_online > /var/backups/owncloud.online/db-$(date +%F).sql
# Wiederherstellung (Instanz vorher in den Wartungsmodus)
mysql -u root -p owncloud_online < /var/backups/owncloud.online/db-JJJJ-MM-TT.sql
Sichern Sie Datenbank und Datenverzeichnis immer zum selben Zeitpunkt. Sonst verweisen Metadaten auf Dateien, die es nicht (mehr) gibt. Den vollständigen Ablauf beschreibt Backups und Updates.
Häufige Probleme
| Symptom | Ursache und Abhilfe |
|---|---|
| „Fehler 500“ nach einem Update | Migrationen fehlen → occ upgrade |
| Dateinamen mit Emojis schlagen fehl | Datenbank nicht auf utf8mb4 → db:convert-mysql-charset |
| Sehr langsame Dateilisten | Indizes fehlen, weil Migrationen nicht gelaufen sind → occ migrations:status core, dann occ migrations:migrate core |
| „Database is locked“ | SQLite im Mehrbenutzerbetrieb → mit MariaDB neu aufsetzen, siehe oben |
| Verbindungsabbrüche unter Last | max_connections der Datenbank und PHP-FPM-Poolgröße aufeinander abstimmen, siehe Performance |