Migrationsanleitung

Diese Anleitung erklärt, wie sich Relution-Daten von einem Objektspeicher-Backend zu einem anderen migrieren lassen. Häufige Szenarien sind:

  • Migration von MinIO zu SeaweedFS (MinIO wird nicht mehr gewartet)
  • Umzug von Cloudanbieter zu selbst-gehostet (oder umgekehrt)
  • Wechsel zwischen Cloud-Anbietern

Die folgenden Beispiele zeigen eine Migration von MinIO zu SeaweedFS, aber die Schritte können für jede S3-kompatible Quelle und jedes Ziel angepasst werden.

Der Migrationsprozess besteht aus vier Schritten:

  1. Neues Speicher-Backend einrichten
  2. Daten vom alten zum neuen Speicher kopieren
  3. Relution-Konfiguration aktualisieren
  4. Altes Backend entfernen

Voraussetzungen

  • Zugriff auf beide Speicher-Backends gleichzeitig
  • Das rclone Kommandozeilen-Tool (Installationsanleitung →)
  • Zugangsdaten für beide Speicher-Backends

Neues Backend einrichten

Bei einer Migration zu SeaweedFS zuerst der SeaweedFS-Einrichtungsanleitung → folgen, aber Relution noch nicht starten.

Sicherstellen, dass sowohl altes als auch neues Speicher-Backend laufen:

docker compose up -d minio seaweedfs

rclone konfigurieren

Das rclone Tool bietet eine schnelle und zuverlässige Möglichkeit, Daten zwischen S3-kompatiblen Backends zu kopieren.

rclone installieren

Den Anweisungen auf rclone.org/install → für das jeweilige Betriebssystem folgen.

Remote-Konfigurationen erstellen

Den Konfigurationsassistenten starten:

rclone config

Die Quelle konfigurieren (MinIO):

  1. n für neuen Remote tippen
  2. Name: source
  3. Storage-Typ: s3 wählen
  4. Provider: Minio wählen (oder Other für generisches S3)
  5. Den eigenen Access Key und Secret Key eingeben
  6. Endpoint: http://localhost:9000
  7. Die Standardwerte für die verbleibenden Optionen übernehmen
  8. Mit y bestätigen

Das Ziel konfigurieren (SeaweedFS):

  1. n für neuen Remote tippen
  2. Name: dest
  3. Storage-Typ: s3 wählen
  4. Provider: Other wählen
  5. Den neuen Access Key und Secret Key eingeben
  6. Endpoint: http://localhost:8333
  7. Die Standardwerte für die verbleibenden Optionen übernehmen
  8. Mit y bestätigen

q tippen, um die Konfiguration zu beenden.

Port-Zugriff überprüfen

Sicherstellen, dass die S3-API-Ports auf dem eigenen Host freigegeben sind. Die compose.yml prüfen:

minio:
  ports:
    - "9000:9000" # S3 API - muss erreichbar sein
    - "9001:9001" # Web-Konsole
# ...
seaweedfs:
  ports:
    - "8333:8333" # S3 API - muss erreichbar sein
    - "23646:23646" # Web-Konsole

Daten kopieren

  1. Überprüfen, dass Relution gestoppt ist, um Datenänderungen während der Migration zu verhindern:

    docker compose ps  # Sollte Speicher-Backends anzeigen, aber NICHT relution
    
  2. Den Transfer starten:

    rclone copy source:relution dest:relution --progress
    
  3. Auf den Abschluss warten. Die Übertragungszeit hängt von der Datenmenge im Bucket ab.

  4. Den Transfer überprüfen:

    rclone check source:relution dest:relution
    

    Erwartete Ausgabe: 0 differences found


Relution-Konfiguration aktualisieren

Die Relution-Konfiguration aktualisieren, um auf das neue Backend zu zeigen. Dabei muss Folgendes geändert werden:

EinstellungAlter WertNeuer Wert
Endpointhttp://minio:9000http://seaweedfs:8333
Access KeyAlter KeyNeuer Key
Secret KeyAlter SecretNeuer Secret

Eine detaillierte Beschreibung der Einrichtung/Änderung: Relution konfigurieren →


Überprüfen und Aufräumen

  1. Relution starten:

    docker compose up -d relution
    
  2. Die Funktionalität überprüfen: Bei Relution anmelden und bestätigen, dass Apps und Ressourcen korrekt geladen werden.

  3. Das alte Backend entfernen (nur nach gründlicher Überprüfung):

    docker compose down minio  # Alten Service stoppen
    
  4. Die Konfiguration bereinigen: Den alten Service aus der eigenen compose.yml entfernen.

  5. Alte Daten löschen: Das alte Speicher-Volume oder -Verzeichnis entfernen (z. B. ./volumes/minio/data).

  6. rclone bereinigen: Optional lässt sich die rclone-Konfiguration entfernen:

    rclone config delete source
    rclone config delete dest
    

Fehlerbehebung

Connection refused / Timeout

Sicherstellen, dass die S3-API-Ports freigegeben und nicht durch eine Firewall oder Netzwerktrennung blockiert sind. Die Verbindung testen:

curl http://localhost:8333  # Sollte einen S3-Fehler zurückgeben

Access denied / 401 / 403

Überprüfen, dass die Zugangsdaten korrekt sind und der Benutzer Zugriff auf den Bucket hat.

Fehlende Dateien nach der Migration

Die Überprüfung erneut ausführen:

rclone check source:relution dest:relution

Wenn Unterschiede gefunden werden, rclone copy erneut ausführen; es werden nur fehlende Dateien übertragen.

Top