Datenbankprüfung
Anekdote zur Laufzeit: Die gesamte Datei „exchange.sqlite3“ wird gelesen. Auf einem AMD 5950X CPU mit SQLite 3.46 (läuft im Single-Thread-Modus) beträgt die Verarbeitungsgeschwindigkeit bei einer Datei im Arbeitsspeicher etwa 104 MB/s. Daher beeinflussen langsame Speichermedien und sehr große Postfächer die Dauer des Vorgangs in der Praxis.
# sqlite3 /var/lib/gromox/domain/1/exmdb/exchange.sqlite3sqlite> pragma integrity_check;integrity_check--------------------------------------------------row 202171 missing from index state_username_indexrow 208269 missing from index state_username_indexrow 208282 missing from index state_username_indexrow 208284 missing from index state_username_indexrow 225182 missing from index state_username_indexrow 226595 missing from index state_username_indexTree 33990 page 33990 cell 260: invalid page number 4053928964Tree 33990 page 33990 cell 259: invalid page number 4050783236Tree 33990 page 33990 cell 255: invalid page number 333502732Multiple uses for byte 1240 of page 33990Recovery
Abschnitt betitelt „Recovery“Wenn (nur) Indizes beschädigt sind, kann die Datei neu erstellt werden, sofern gromox-http die Datenbank gerade nicht aktiv nutzt:
systemctl stop gromox-httpcd /var/lib/gromox/domain/1/exmdb/(echo "PRAGMA foreign_keys=0;"; sqlite3 exchange.sqlite3 ".recover") | sqlite3 new.dbchmod u=rw,g=rw new.dbchown grommunio:gromox new.dbmv exchange.sqlite3 exchange.sqlite3.oldmv new.db exchange.sqlite3systemctl restart gromox-httpWir deaktivieren hier vorübergehend Fremdschlüssel (FK), da die Wiederherstellung Tabellen in einer Reihenfolge verarbeiten kann, die von FK-Einschränkungen nicht unterstützt wird.
(Es gibt auch einen alternativen Befehl für .recover:)
sqlite3 exchange.sqlite3 ".clone new.db"Die Wirksamkeit der Befehle „recover“ und „clone“ hängt vom Ausmaß der Beschädigung der Datenbankdatei ab. Strukturelle Probleme auf der Ebene SQLite werden (soweit möglich) behoben, doch können die wiederhergestellten Daten insgesamt weiterhin logische Fehler enthalten, z. B. zwei Benutzer mit derselben ID.
Wenden Sie sich an den grommunio-Support. Erstellen Sie Sicherungskopien.