Vorwort

Ich wollte von Sqlite3 zu MariaDB mirgieren und stellte dann fest das ich/wir das im Grunde nicht brauchen! 🙂 Wer dennoch einen kleinen Überblick bekommen möchte, möge weiter unten nachlesen.

Warum?:

  • Wir sind ein kleineres Team (1-10)
  • Code Basis nur ca. 5 Mio Zeilen Code
  • Das Hosting von Gitea ist nicht öffentlich/ nur in unserem Intranet
  • Nur Rahmendaten/ Metadata für Gitea werden in der DB gespeichert. Die Repositories/ Quellen liegen weiterhin auf dem Dateisystem.

Dafür brauch man MariaDB/ MySQL tatsächlich nicht 🙂

Erklärung:

Die Menge an Benutzern und Menge an verbrauchtem Speicherplatz ist viel zu gering um Performance oder Skalierung Gesichtspunkte ernsthaft in Betracht zu ziehen. (Ungetestet: Vermutlich wird das einhängen einer MySQL Datenbank vom einem Datenbank Server vielleicht sogar eine Bremse durch Netzwerk latenzen.
Wie geschrieben: Bei der Menge völlig unnötig und überdimensioniert.

Wer öffentliches Hosting von Gitea anstrebt wird eh von beginn an anders angefangen haben Gitea entsprechend auf zu setzen um Skalierung und oder Performance überhaupt zu ermöglichen.

Basis zu diesem Artikel: Gitea – Installation unter Debian Stretch (9)

Version / Enviroment / Umgebung

Getestete Version von Gitea: 1.4.3 ~ cfb76cd (1.4.3* | 1.5RC1)
OS: Debian Stretch (9)
User: Gitea läuft unter dem User ‚git‘

Aufgaben zur Migration

  • Backup machen (Komplette installation! Falls etwas schief geht)
  • su - git && cd /path/to/gitea && ./gitea dump macht ein Backup der Daten. Siehe [1]
    • Falls die Konfigurationsdatei oder andere Dateien zum Schutz für den „git“ user gesperrt sind kann das Backup nicht vollständig Arbeiten und bricht vermutlich ab. chown git:git <file> oder chmod a+r <file> zum lösen der Restriktionen verwenden aber bitte zum Schluss wieder absichern! 🙂
  • In dem Backup Zip befindet sich ein SQL Dump der Sqlite3 Datenbank.
    • Man kann probieren die kompletten Anweisungen der SQL Datei in eine neu erstellte Datenbank in MariaDB/ MySQL zu importieren (Sollte gehen, wenn nicht…) nur die Insert statements heraus filtern und von Gitea die Datenbank erstellen lassen und dann die Daten Importieren.
  • Gitea Konfigurationsdatei anpassen: Den Installer wieder aktivieren.
  • Gitea neu starten damit die Konfiguration greift systemctl restart gitea.service.
  • Die Konfigurations Seite über den Browser aufrufen.
    • Hier kann man nun den neuen Datenbank Typ wählen und seine Zugangsdaten angeben (Ggf.: Admin -> Einstellungen -> Konfiguration).
    • Wichtig: Bitte alle Einstellungen zu Gitea erneut prüfen da die Konfigurationsdatei neu geschrieben wird!
      Nach dem Speichern sollte Gitea kurzweilig nicht benutzt werden (können) um mögliche konflikte in der Datenbank zu vermeiden. Falls Benutzer sich registrieren oder anmelden wollen.
    • Sofern die Verbingung zur Datenbank klappt wird Gitea die angegebene Datenbank erstellen sofern die Tabellen nicht existieren.
    • Wie oben Beschrieben nun nur die Insert Anweisungen z.b. via phpmyadmin ausführen (besser) oder die erstellte DB löschen und versuchen die SQL Datei aus dem Backup zu importieren.
  • Hat das funktioniert sollte Gitea nochmal neu gestartet werden damit die Einstellungen neu eingelesen werden können.
  • Absichern der Dateien z.b. der app.ini nicht vergessen. Fertig.

Quellen