title: "Migration" date: '2026-05-26T00:00:00+08:00' weight: 45 #
Migriere einen Dienst von einem Node zu einem anderen unter Wahrung der Datenintegrität. Die Migrationsaufgabe orchestriert Backup-, Stopp-, Restore-, Start- und DNS-Update-Schritte über Quell- und Ziel-Nodes hinweg.
Konfiguration #
Datenelemente, die während der Migration übertragen werden, müssen sowohl eine backup- als auch eine restore-Aktion in data_protect haben. Deklariere sie in migrate:
name: my-app
nodes:
- main
data_protect:
data:
- name: uploads
backup:
strategy: files.copy
include:
- ./data/uploads
restore:
strategy: files.copy
include:
- ./data/uploads
migrate:
data:
- name: uploads
| Schlüssel | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name |
string |
Ja | Muss auf einen data_protect.data[].name mit sowohl Backup- als auch Restore-Aktionen verweisen. |
enabled |
bool |
Nein | Aktiviert oder deaktiviert die Migration für dieses Element. |
Migration ausführen #
Web-UI:
- Öffne die Dienst-Detailseite.
- Verwende die Migrationssteuerung, um Quell- und Ziel-Nodes auszuwählen.
- Klicke auf Migrieren.
CLI:
composia service migrate my-app --to edge-1
Migrationsschritte #
- Daten exportieren — Führe eine Backup-Aufgabe auf dem Quell-Node für jedes konfigurierte Datenelement aus.
- Quellinstanz stoppen — Führe
docker compose downaus, entferne die Caddy-Konfiguration. - Caddy auf der Quelle neu laden — Entferne den Proxy-Eintrag von der Quell-Caddy-Instanz.
- Daten auf dem Ziel wiederherstellen — Führe eine Restore-Aufgabe auf dem Ziel-Node für jedes Datenelement aus.
- Auf dem Ziel deployen — Führe
docker compose up -daus, synchronisiere die Caddy-Konfiguration. - Caddy auf dem Ziel neu laden — Wende den Proxy-Eintrag auf der Ziel-Caddy-Instanz an.
- DNS aktualisieren — Aktualisiere DNS-Records, um auf den Ziel-Node zu verweisen.
- Konfiguration schreiben — Aktualisiere
nodesincomposia-meta.yaml, committe in Git.
Überlegungen #
- Der Dienst muss auf dem Quell-Node deployed sein und der Ziel-Node muss online sein.
- Die Migration verursacht kurze Ausfallzeiten. Führe sie außerhalb der Spitzenzeiten durch.
- Die Quellinstanz wird vor der Datenübertragung gestoppt, um Konsistenz zu gewährleisten.
- Für Datenbanken verwende Exportstrategien (
database.pgdumpall/database.pgimport).
Rollback #
Wenn eine Migration fehlschlägt oder abgelehnt wird, löse eine Rollback-Aufgabe über die Web-UI oder CLI aus. Die Rollback-Aufgabe unterstützt diese Wiederherstellungsaktionen:
| Aktion | Beschreibung |
|---|---|
deploy_source |
Deploye den Dienst erneut auf dem ursprünglichen Quell-Node. |
stop_target |
Stoppe und bereinige den Dienst auf dem Ziel-Node. |
rollback_dns |
Synchronisiere DNS-Records zurück zum Quell-Node. |
Wähle die Aktionen, die zum fehlgeschlagenen Schritt passen. Wenn die Migration beispielsweise fehlschlug, nachdem das Ziel deployed wurde, aber DNS noch nicht aktualisiert wurde, benötigst du möglicherweise nur stop_target und deploy_source.
CLI:
composia task rollback <task-id> --deploy-source --stop-target --rollback-dns
Lasse Flags für Aktionen weg, die du nicht benötigst.
Siehe auch #
- Backups — Rustic-Einrichtung und Backup-Konfiguration.
- Dienstkonfiguration —
data_protect- undmigrate-Feldreferenz.