Jeder Server, den Sie betreiben, zieht mindestens einmal um. Der Host erhöht seine Preise, verlangt plötzlich ein Dokument, das Sie lieber nicht verschicken würden, oder nullroutet wegen einer Abuse-Beschwerde über einen Nachbarn für einen Nachmittag ein ganzes /24. Die Frage war nie, ob Sie migrieren würden — nur, ob es an einem Dienstagmorgen passiert, den Sie sich ausgesucht haben, oder an einem Samstagabend, den jemand anderes für Sie ausgesucht hat.
Die Technik ist nicht der schwierige Teil. Dateien zu kopieren ist rsync, das wissen Sie schon. Was Migrationen scheitern lässt, ist das Timing: Drei getrennte Uhren laufen während eines Umzugs, sie sind nicht synchron, und jeder echte Fehler passiert in den Lücken zwischen ihnen. In dieser Anleitung geht es um diese Lücken — die DNS-TTL, die Sie schon vor einer Woche hätten senken sollen, die Datenbank, die Sie kopiert haben, während noch in sie geschrieben wurde, das Zertifikat, das nur auf einer Maschine existiert, die Sie gerade abgeschaltet haben, und die Zugangsdaten, die der alte Host die ganze Zeit über mitlesen konnte.
Die Befehle setzen auf beiden Seiten Debian oder Ubuntu voraus, dazu eine Webanwendung mit Datenbank, denn genau das migrieren die meisten Leute. Eine Nextcloud, ein Gameserver, ein Bot oder eine BTCPay-Instanz folgen alle demselben Muster — nur der Schritt mit den Daten unterscheidet sich.
Die drei Uhren, und warum „null Ausfallzeit“ das falsche Ziel ist
Eine Migration ist kein einzelnes Ereignis. Es sind drei Uhren, die mit unterschiedlicher Geschwindigkeit laufen, und die ganze Kunst besteht darin, sie daran zu hindern, schlecht zu überlappen:
- Die DNS-Uhr. Ab dem Moment, in dem Sie einen A-Record ändern, antworten Resolver weiterhin mit der alten Adresse, bis ihre zwischengespeicherte Kopie abläuft. Diese Uhr kontrollieren Sie zum Zeitpunkt der Umschaltung nicht mehr — Sie haben sie kontrolliert, als Sie die TTL gesetzt haben, Tage vorher.
- Die Daten-Uhr. Ihre letzte Kopie der Daten ist eine Momentaufnahme. Alles, was nach diesem Moment geschrieben wird, existiert nur auf der alten Maschine und geht verloren, sofern Sie es nicht entweder nachspielen oder verhindern.
- Die Sitzungs-Uhr. Uploads in Bearbeitung, offene WebSockets, ein Zahlungs-Callback, der in vierzig Sekunden von einem Prozessor eintrifft, der Ihren Hostnamen vor zwei Minuten aufgelöst hat. Diese landen auf welcher Box auch immer der Absender aufgelöst hat, nicht auf der, die Sie bevorzugen würden.
Buchstäblich null Ausfallzeit anzustreben bedeutet, alle drei gleichzeitig am Laufen zu halten, was in der Praxis bedeutet, die Anwendung auf zwei Servern laufen zu lassen, die gleichzeitig in zwei Datenbanken schreiben. Das ist ein echtes Problem, und das falsche, um es für einen einzelnen VPS zu lösen. Das ehrliche Ziel ist enger gefasst und viel leichter zu erreichen:
Kein Besucher sieht einen Fehler, und kein Schreibvorgang geht verloren. Ein neunzig Sekunden langes Fenster, in dem die Seite läuft, aber im Read-only-Modus ist, erfüllt beides, und fast niemand wird es bemerken. Eine Live-Umschaltung ohne Wartungsfenster, die still und leise die letzten vierzig Minuten an Formular-Einreichungen verliert, erfüllt keins von beidem, und Sie werden es von einem Kunden erfahren.
Der Plan lautet also: Machen Sie das Read-only-Fenster so kurz wie möglich, machen Sie es langweilig, und machen Sie es umkehrbar. Alles, was folgt, dient diesen drei Dingen.
Was der alte Host behält, nachdem Sie gegangen sind
Dieser Teil wird gerne übersprungen, dabei ist er einer der Hauptgründe, warum viele Leute überhaupt migrieren, also lohnt es sich, genau zu sein. Solange Ihr Server auf der Hardware eines anderen lief, war dieser Anbieter in der Lage, Folgendes zu sehen:
- Die Festplatte, vollständig. Sofern das Volume nicht mit LUKS verschlüsselt war und nur von Ihnen entsperrt wurde, konnte der Hypervisor jedes einzelne Byte davon lesen — Schlüssel, Tokens, Datenbankinhalte, alles. Selbst mit Verschlüsselung enthält der Arbeitsspeicher einer laufenden VM den entsperrten Schlüssel.
- Sämtliche Zugangsdaten, die die Maschine verwendet hat. API-Tokens in Umgebungsdateien, SMTP-Passwörter, RPC-Geheimnisse des Wallet-Daemons, Ihre öffentlichen SSH-Schlüssel und, falls Sie je einen in eine Rescue-Konsole eingefügt haben, einiges mehr als das.
- Alles, was das Konto verlangt hat. Ein Name, eine Karte, eine Adresse, eine Telefonnummer für die SMS-Verifizierung, die IP-Adressen, von denen aus Sie sich eingeloggt haben. Diese Sammlung wird nicht kleiner, wenn Sie das Konto schließen, und in den meisten Rechtsordnungen ist der Anbieter verpflichtet, Teile davon jahrelang aufzubewahren.
Nichts davon ist finster — es ist schlicht das, was der Betrieb einer virtuellen Maschine auf der Hardware eines anderen bedeutet, überall, auch hier. Wichtig ist, dass eine Migration der einzige saubere Bruchpunkt ist, den Sie bekommen. Die neue Box startet mit frischen Schlüsseln, frischen Tokens und einer frischen IP; wenn Sie die alten Geheimnisse mit hinübernehmen, nehmen Sie auch das alte Risiko mit, und der Bruch war nur kosmetisch.
Behandeln Sie deshalb jedes Geheimnis auf der alten Maschine so, als sei es standardmäßig kompromittiert, und stellen Sie es während des Umzugs neu aus. Das kostet Sie einmalig eine Stunde. Es später, separat, zu erledigen, ist eine Aufgabe, zu der es nie kommt. Und falls ein Teil des Grundes für Ihren Umzug ist, dass das Konto selbst das Leck ist, dann ist das neue in Monero zu bezahlen, gegen ein no-KYC-Konto, der Schritt, der den Bruch echt statt symbolisch macht — seien Sie aber ehrlich zu sich selbst darüber, was das bringt und was nicht, was ein eigenes Thema ist.
Die TTL-Uhr beginnt eine Woche vor dem Umzug
Time to live ist die Anzahl an Sekunden, die ein Resolver Ihren Record behalten darf, bevor er erneut anfragt. Wenn Ihr A-Record die Standard-TTL von 3600 hat, dann sendet ein Resolver, der vor einer Sekunde angefragt hat, in dem Moment, in dem Sie ihn ändern, die nächsten neunundfünfzig Minuten und neunundfünfzig Sekunden lang weiterhin Besucher an den alten Server. Bei den 86400, die viele Registrare immer noch als Standard ausliefern, wird daraus ein ganzer Tag.
Prüfen Sie, was Sie tatsächlich eingestellt haben — nicht, was Sie zu haben glauben:
dig +noall +answer example.com A
dig +noall +answer www.example.com A
dig +noall +answer example.com MX
dig +noall +answer example.com NSDie zweite Spalte jeder Antwort ist die TTL, die herunterzählt. Senken Sie jeden am Umzug beteiligten Record auf 300 Sekunden, und tun Sie das mindestens die doppelte aktuelle TTL-Dauer vor Ihrer Umschaltung: Steht der Record auf 86400, braucht die Änderung selbst einen Tag, um überall sichtbar zu sein, was der rekursive Witz im Zentrum jeder DNS-Migration ist.
Zwei Details, die Leuten zum Verhängnis werden:
- Die NS-Records haben ihre eigene TTL, meist eine lange, und sie wird beim Registrar gesetzt statt in Ihrer Zone. Das spielt nur eine Rolle, wenn Sie auch die Nameserver wechseln — was Sie vermeiden sollten, in derselben Woche wie einen Serverumzug zu tun. Wechseln Sie den Host, lassen Sie es sich setzen, und wechseln Sie dann den DNS-Anbieter, wenn Sie möchten. Zwei Variablen, zwei Wochenenden.
- „DNS-Propagation“ gibt es nicht. Nichts propagiert; Caches laufen ab. Es gibt keine Warteschlange, in der man wartet, und keinen Knopf, der ein Update schneller hinausdrückt. Der einzige Hebel ist die TTL, und der ist zum Zeitpunkt der Umschaltung schon gezogen.
Während Sie ohnehin in der Zonendatei sind, notieren Sie sich jeden Record, der auf die IP-Adresse des Servers zeigt statt auf einen Namen. Meist gibt es einen mehr, als Sie in Erinnerung haben: mail, webmail, ein blankes @, ein altes staging, den SPF-Record mit einem ip4:-Literal darin, und den AAAA-Record, den Sie hinzugefügt haben, als Sie zum ersten Mal einen IPv6-Block bekamen, und dann vergessen haben. Jeder von ihnen braucht einen Plan, und die AAAA ist der klassische stille Fehlschlag — Sie stellen den A-Record um, vom eigenen Laptop aus sieht alles gut aus, und jeder Besucher mit funktionierendem IPv6 landet weiterhin auf einem Server, den Sie bereits gelöscht haben.
Die neue Box dimensionieren, und was Sie prüfen sollten, bevor Sie sich festlegen
Widerstehen Sie dem Drang, dieselbe Spezifikation zu bestellen, die Sie jetzt haben. Sie kaufen anhand der Zahlen auf einer Rechnung, nicht anhand dessen, was die Last tatsächlich verbraucht. Verbringen Sie zuerst zwei Minuten mit Messen:
# peak RAM actually in use, not allocated
free -m
# what has been paging, if anything
vmstat -s | grep -i swap
# real disk consumption, biggest first
du -xh --max-depth=2 / 2>/dev/null | sort -rh | head -20
# load relative to core count
uptime; nprocZwei Faustregeln bewähren sich gut. Wenn Ihr Load Average unter Ihrer Kernzahl liegt und Swap nie angefasst wurde, ist die Box weder CPU- noch speichergebunden, und Sie können seitwärts oder nach unten wechseln. Liegt die Platte über siebzig Prozent, dimensionieren Sie die neue nach dem, was Sie in einem Jahr brauchen werden, statt nach dem, was Sie heute nutzen — ein Volume später zu vergrößern ist eine Migration im Kleinen, und Sie machen gerade eine davon.
Auf unserer Seite lässt sich das sauber zuordnen: Pup (1 vCPU, 1 GB, 25 GB) betreibt eine statische Seite, ein VPN oder einen kleinen Bot; Cub (1 vCPU, 2 GB, 40 GB) ist die kleinste Box, die eine Anwendung samt eigener Datenbank hostet, ohne zu swappen; Scout (2 vCPU, 4 GB, 70 GB) ist der komfortable Standard für eine echte Seite mit echtem Traffic; Hunter (4 vCPU, 8 GB, 140 GB) und aufwärts ist der Bereich, wo Container, CI oder mehrere Dienste auf einer Box anfangen hinzugehören. Alle laufen komplett auf NVMe mit unbegrenztem Traffic, sodass Bandbreitenüberschreitung — ein häufiger Grund für einen Umzug überhaupt — aufhört, eine Variable zu sein. Vollständige Preisübersicht hier.
Bevor Sie auch nur ein einziges Byte bewegen, prüfen Sie drei Dinge über die Maschine, die Sie gerade bekommen haben. Jedes davon ist jetzt billig und nach der Umschaltung teuer:
- Der Ruf der IP. Eine recycelte Adresse mit der Geschichte von jemand anderem sorgt dafür, dass Ihre Mail abgelehnt und Ihre Besucher zusätzlich geprüft werden. Unsere werden vor der Vergabe geprüft und nach Risiko segmentiert, aber es ist jetzt Ihr Dienst darauf, prüfen Sie es also selbst nach — die Fünf-Minuten-Version gibt es hier. Tun Sie das vor der DNS-Umstellung, wenn die Antwort noch nichts kostet.
- Reverse-DNS. Wenn die Box je Mail versenden soll, muss der PTR-Record zu einem Hostnamen auflösen, der wieder zurück auf dieselbe IP auflöst. Individuelles rDNS ist auf Anfrage verfügbar; fordern Sie es jetzt an, damit es sich bis zur Umschaltung gesetzt hat.
- Die Route von dort, wo Ihre Nutzer sind. Ein
mtrvon einer Maschine in der Region Ihrer Nutzer verrät Ihnen mehr über die Wahl der Jurisdiktion als jedes Datenblatt. Gemessene Latenz schlägt angenommene Latenz.
Schritt für Schritt
- Jede TTL senken, Tage bevor Sie den Umzug planen
Das steht an erster Stelle, weil es der einzige Schritt mit einer zwingenden Wartezeit ist. Alles andere lässt sich an einem Nachmittag erledigen; dieser hier lässt sich nicht beschleunigen, und ihn zu überspringen ist es, was aus einer Fünf-Minuten-Umschaltung eine Zwei-Tage-Umschaltung macht.
Loggen Sie sich dort ein, wo Ihre Zone liegt, und setzen Sie die TTL auf 300 bei jedem Record, der sich ändern wird: das Apex-
A, dasAAAA,www,mail, und alles andere, was auf ein IP-Literal zeigt. Bestätigen Sie es dann von außen, denn Kontrollpanels und Realität sind sich manchmal uneinig:dig +noall +answer example.com A @1.1.1.1 dig +noall +answer example.com AAAA @1.1.1.1 dig +noall +answer www.example.com A @8.8.8.8Die Zahl vor
INist die verbleibende TTL. Fragen Sie eine Minute später erneut ab: Sie sollte von 300 herunterzählen, nicht von etwas Größerem. Zählt sie immer noch von 3600 herunter, ist der alte Wert zwischengespeichert und Sie müssen es aussitzen — genau deshalb passiert das an Tag minus sieben und nicht am Morgen des Umzugs.Lassen Sie die TTL während der Migration und eine Woche danach auf 300, damit Ihr Rollback ebenfalls schnell ist. Setzen Sie sie wieder auf etwas Vernünftiges zurück — 3600 ist in Ordnung —, sobald die alte Box weg ist.
- Den alten Server inventarisieren, bevor Sie irgendetwas kopieren
Sie migrieren keine Festplatte, Sie migrieren ein laufendes System, und die Teile, die man vergisst, liegen nie in
/var/www. Es sind der Cronjob, der am vierten des Monats läuft, die Firewall-Regel, die während eines Vorfalls hinzugefügt wurde, das Paket, das vor zwei Jahren aus einem Drittanbieter-Repository installiert wurde. Erfassen Sie den Zustand der Maschine als Text, und kopieren Sie diesen Text mit allem anderen hinüber:mkdir -p /root/mig dpkg --get-selections > /root/mig/packages.txt systemctl list-units --type=service --state=running --no-pager > /root/mig/services.txt systemctl list-timers --all --no-pager > /root/mig/timers.txt crontab -l > /root/mig/cron-root.txt 2>/dev/null for u in $(cut -d: -f1 /etc/passwd); do crontab -lu "$u" 2>/dev/null | sed "s/^/[$u] /"; done > /root/mig/cron-users.txt ss -tlnp > /root/mig/listening.txt nft list ruleset > /root/mig/firewall.txt 2>/dev/null || iptables-save > /root/mig/firewall.txt cp -a /etc/hosts /etc/fstab /root/mig/ du -xh --max-depth=2 / 2>/dev/null | sort -rh | head -40 > /root/mig/disk.txtLesen Sie nun
listening.txtZeile für Zeile und klären Sie jeden Port. Diese Datei ist die endgültige Antwort auf „was macht dieser Server eigentlich“, und sie hält routinemäßig eine Überraschung bereit — ein Metrics-Exporter, eine vergessene Staging-Kopie, eine Datenbank, die auf einem öffentlichen Interface lauscht, was sie nie hätte tun sollen.Schreiben Sie gleichzeitig Ihre Exclude-Liste, damit der erste Sync nicht eine Stunde mit Daten verbringt, die Sie gar nicht wollen:
cat > /root/mig/excludes <<'EOF' /dev /proc /sys /run /tmp /var/tmp /var/cache /var/lib/apt/lists /swapfile /var/lib/docker/overlay2 /var/lib/mysql /var/lib/postgresql **/node_modules **/.cache EOFBeachten Sie, dass die Datenbankverzeichnisse absichtlich ausgeschlossen sind. Sie bekommen ihren eigenen Schritt, und sie hier mit hineinzukopieren ist genau der Fehler, den Schritt sechs verhindern soll.
- Den neuen Server aufsetzen und härten, bevor er irgendetwas enthält
Bestellen Sie die Box, wählen Sie den Standort und nehmen Sie, wenn möglich, dieselbe OS-Hauptversion wie beim alten Server. Gleichzeitig den Host zu wechseln und von Debian 12 auf Debian 13 zu wechseln bedeutet, dass Sie nicht wissen, welche Änderung schuld war, wenn etwas kaputtgeht. Erst umziehen, später upgraden.
Bevor irgendetwas Sensibles darauf landet, geben Sie der Maschine den zehnminütigen Härtungsdurchgang: ausschließlich Schlüssel-SSH, Root-Login deaktiviert, eine Default-Deny-Firewall, unbeaufsichtigte Sicherheitsupdates. Das dauert jetzt zehn Minuten und ist später, rund um einen laufenden Dienst herum, echt mühsam nachzuholen.
Erstellen Sie dann einen Schlüssel, der nur für diese Migration existiert, auf dem alten Server, sodass der spätere Entzug des Migrationszugriffs nie bedeutet, Ihren eigenen Login anzufassen:
# on the OLD server ssh-keygen -t ed25519 -f /root/.ssh/id_migrate -C 'migration' -N '' cat /root/.ssh/id_migrate.pubLegen Sie diesen öffentlichen Schlüssel in
/root/.ssh/authorized_keysauf dem neuen Server ab, und bestätigen Sie dann die Reiserichtung — alt drückt zu neu, sodass das Credential auf der Maschine lebt, die Sie verlassen, und mit ihr stirbt:ssh -i /root/.ssh/id_migrate root@NEW_IP 'hostname; df -h /; free -m'Tragen Sie schließlich die neue IP in die
/etc/hostsdes alten Servers ein, unter einem Namen wienewbox. Jeder folgende Befehl wird kürzer und, nützlicherweise, schwerer um ein Uhr nachts auf die falsche Maschine zu richten. - Die neue IP prüfen, bevor Sie ihr irgendetwas anvertrauen
Sie haben jetzt eine Adresse, die noch nie jemand für Ihren Dienst benutzt hat, und das ist der letzte Moment, in dem ein Problem damit zu finden nichts kostet. Drei Checks, fünf Minuten:
Blocklisten. Prüfen Sie die Adresse gegen die Multi-RBL-Checks — das vollständige Verfahren und wie man die Ergebnisse liest, steht hier. Ein Treffer auf einer Policy-Liste wie der Spamhaus PBL ist normal für eine Rechenzentrums-IP und bedeutet wenig für Web-Traffic. Ein Treffer auf SBL oder XBL ist ein echter, und der richtige Zeitpunkt, ihn zu melden, ist jetzt, nicht nachdem Ihre Nutzer schon darauf sind.
Reverse-DNS. Prüfen Sie, worauf die Adresse heute antwortet:
dig +short -x NEW_IPWenn die Box Mail versenden wird, fordern Sie den gewünschten PTR-Record an und stellen Sie sicher, dass er zu einem Hostnamen passt, dessen A-Record wieder zurück auf dieselbe IP zeigt. Vorwärts und Rückwärts müssen übereinstimmen; ein Mismatch ist schlimmer als ein generischer Name.
Erreichbarkeit und Route. Bestätigen Sie, dass die benötigten Ports tatsächlich durchgängig offen sind, von außen, statt anzunehmen, dass Ihre Firewall das Einzige auf dem Weg ist:
# from a third machine, or your laptop nc -vz NEW_IP 22 mtr -rwc 20 NEW_IPDie
mtr-Ausgabe ist die, die es aufzuheben lohnt. Verlust am letzten Hop zählt; Verlust an einem Zwischen-Hop ist meist ein Router, der ICMP herabstuft, und bedeutet nichts. Wenn die Latenz aus der Weltgegend Ihrer Nutzer spürbar schlechter ist als beim alten Host, besser jetzt herausfinden, solange es Sie, Ihre Meinung zu ändern, nur eine Bestellung kostet und keine Daten. - Das Dateisystem mit rsync kopieren — und zuerst einen Dry-Run machen
Jetzt die Massenübertragung. Machen Sie es in zwei Durchgängen: eine erste vollständige Kopie Tage vorher, die so lange dauert, wie sie eben dauert, dann später kurze Delta-Durchgänge, die nur bewegen, was sich geändert hat. Immer zuerst einen Dry-Run machen — die Ausgabe ist eine Liste von genau dem, was gleich passieren wird, und sie einmal zu lesen hat mehr Migrationen gerettet als jede andere Gewohnheit hier.
# on the OLD server, dry run rsync -aHAXx --numeric-ids --info=progress2 --dry-run \ --exclude-from=/root/mig/excludes \ -e 'ssh -i /root/.ssh/id_migrate' \ /var/www/ root@newbox:/var/www/Dann derselbe Befehl ohne
--dry-run. Wiederholen Sie ihn für jedes Verzeichnis, das wichtig ist:/etcselektiv statt vollständig,/home,/srv,/opt, und wo auch immer Ihre Anwendung tatsächlich ihre Uploads aufbewahrt.Die Flags verdienen ihren Platz.
-aerhält Rechte, Eigentümerschaft, Zeitstempel und Symlinks;-Hbehält Hardlinks bei;-Aund-Xübertragen ACLs und erweiterte Attribute, was Ihr Upload-Verzeichnis braucht, falls dort je welche gesetzt wurden;-xhindert rsync daran, in andere eingehängte Dateisysteme abzudriften.--numeric-idsist das, was Leute weglassen und bereuen: Ohne es ordnet rsync Eigentümerschaft per Name zu, und wennwww-dataauf den beiden Boxen eine unterschiedliche UID hat, landet jede Datei beim falschen Benutzer, auf eine Weise, die mühsam zu entwirren ist.Zwei Warnungen.
/etcvollständig auf ein laufendes System zu kopieren, überschreibt die Netzwerkkonfiguration der neuen Maschine, ihre fstab und ihre SSH-Host-Keys — kopieren Sie die konkrete Konfiguration, die Sie brauchen, nicht das Verzeichnis. Und heben Sie sich--deletefür den letzten Durchgang auf: Es ist richtig, um die neue Box exakt an die alte anzugleichen, und destruktiv, wenn Sie auf dem Ziel schon etwas angelegt haben.Wenn der erste vollständige Durchgang fertig ist, vergleichen Sie beide Seiten, damit Sie wissen, dass er getan hat, was Sie denken:
du -sh /var/www ssh -i /root/.ssh/id_migrate root@newbox 'du -sh /var/www' - Die Datenbank per Dump verschieben, nie per Dateikopie
Das ist der Schritt, der entscheidet, ob Ihre Migration langweilig oder unvergesslich wird. Das Datenverzeichnis einer Datenbank ist nur konsistent, wenn der Server gestoppt ist. Kopieren Sie es live, bekommen Sie einen Satz Dateien, die gut aussehen, sich gut übertragen lassen und sich zu einer Datenbank wiederherstellen, die subtil und dauerhaft beschädigt ist — oft ohne Fehlermeldung, bis Wochen später.
Dumpen Sie sie richtig. Für MySQL oder MariaDB gibt Ihnen
--single-transactioneinen konsistenten Snapshot, ohne das Ganze zu sperren:mysqldump --single-transaction --quick --routines --triggers --events \ --default-character-set=utf8mb4 --databases appdb \ | zstd -T0 > /root/mig/appdb.sql.zstFür PostgreSQL lohnt sich das Custom-Format — es komprimiert, und es erlaubt Ihnen, bei Bedarf selektiv wiederherzustellen:
pg_dump -Fc -Z6 appdb > /root/mig/appdb.dumpÜbertragen Sie es und stellen Sie wieder her:
scp -i /root/.ssh/id_migrate /root/mig/appdb.sql.zst root@newbox:/root/ # on the NEW server zstd -dc /root/appdb.sql.zst | mysql # postgres equivalent pg_restore -d appdb -j4 /root/appdb.dumpVerifizieren Sie dann, denn „die Wiederherstellung ist fertig“ und „die Daten sind da“ sind unterschiedliche Aussagen. Vergleichen Sie die Zeilenzahlen der wichtigen Tabellen auf beiden Seiten:
mysql -N -e "SELECT COUNT(*) FROM appdb.orders; SELECT COUNT(*) FROM appdb.users;"Zwei Dinge, die sich in Dumps verstecken: der Zeichensatz und die Collation, woher verstümmelte Umlaute und Akzentzeichen kommen — wenn die alte Datenbank auf
utf8stattutf8mb4läuft, entscheiden Sie bewusst, ob der Umzug auch der Moment ist, das zu reparieren; und die Datenbank-Nutzer und -Rechte, diemysqldump --databasesnicht einschließt. Legen Sie den Nutzer und das Passwort der Anwendung auf der neuen Box explizit neu an, und denken Sie dann daran, dass der Connection-String in Ihrer Konfiguration dazu passen muss.Wenn Ihre Anwendung SQLite verwendet, ist die Datei die Datenbank, und dieselbe Regel gilt — kopieren Sie sie nicht live. Verwenden Sie
sqlite3 app.db ".backup /root/mig/app.db", was sicher eine konsistente Kopie erstellt. - Den Stack hochfahren und ihn hinter einem Hosts-Datei-Override proben
Der neue Server hat jetzt die Dateien und die Daten. Starten Sie alles und testen Sie es unter seinem echten Hostnamen — während der Rest der Welt weiterhin munter die alte Box benutzt. Das ist der wertvollste Trick im ganzen Verfahren, und er kostet eine Zeile.
Fügen Sie auf Ihrem eigenen Laptop die IP des neuen Servers zu
/etc/hostshinzu (oderC:\Windows\System32\drivers\etc\hosts):203.0.113.10 example.com www.example.comIhr Browser löst die echte Domain jetzt zum neuen Server auf, und der von sonst niemandem tut das. Jede URL stimmt, jede Cookie-Domain passt, jeder Redirect- und Callback-Pfad verhält sich so, wie er es nach der Umschaltung tun wird — genau das, was ein Test gegen eine temporäre
new.example.com-Subdomain nicht erfassen kann, weil die Hälfte dessen, was bei einer Migration kaputtgeht, hostnamenabhängig ist.Für einen einzelnen schnellen Check, ohne irgendetwas zu bearbeiten, kann
curldasselbe inline erledigen:curl -sSI --resolve example.com:443:203.0.113.10 https://example.com/ curl -sS --resolve example.com:80:203.0.113.10 http://example.com/ -o /dev/null -w '%{http_code}\n'Gehen Sie die gesamte Anwendung durch, nicht nur die Startseite: einloggen, ein Formular abschicken, eine Datei hochladen, eine Passwort-Reset-Mail auslösen, eine Admin-Seite laden, den Endpunkt treffen, den ein Zahlungsdienstleister aufruft. Lesen Sie dann die Error-Logs, selbst wenn alles gut aussah — fehlende PHP-Erweiterungen, ein falscher Dateimodus auf einem Cache-Verzeichnis und ein Datenbank-Nutzer, den es noch nicht gibt, tauchen dort alle auf, bevor sie auf dem Bildschirm auftauchen.
Denken Sie daran, die Hosts-Zeile hinterher zu entfernen. Jeder vergisst es einmal und verbringt dann zwanzig Minuten damit, sich zu fragen, warum der Rollback offenbar nicht funktioniert hat.
- TLS auf der neuen Box zum Laufen bringen, bevor Sie irgendetwas umstellen
Zertifikate sind an Namen gebunden, nicht an IP-Adressen, also macht nichts an einer Migration ein Zertifikat ungültig, das Sie bereits besitzen. Was kaputtgeht, ist die Ausstellung: Die übliche HTTP-01-Challenge bittet Let's Encrypt, eine Datei über Port 80 beim zu zertifizierenden Namen abzurufen, und dieser Name zeigt noch auf den alten Server. Das Henne-Ei-Problem ist die ganze Schwierigkeit, und es gibt drei saubere Wege heraus.
Die bestehenden Zertifikate kopieren. Am einfachsten und meist richtig. Der private Schlüssel und die Kette wandern wie jede andere Datei:
rsync -aHAX -e 'ssh -i /root/.ssh/id_migrate' \ /etc/letsencrypt/ root@newbox:/etc/letsencrypt/Der neue Server kann sofort gültiges TLS ausliefern, und die Erneuerung fängt von selbst an zu funktionieren, sobald DNS auf ihn zeigt. Bestätigen Sie, dass der Timer dort aktiviert ist:
systemctl list-timers | grep certbot.Eine DNS-01-Challenge verwenden. Beweist die Kontrolle über die Domain per TXT-Record statt per HTTP-Anfrage, funktioniert also von einem Server aus, auf den noch nichts zeigt. Ideal, wenn Sie vor der Umschaltung ein echt unabhängiges Zertifikat auf der neuen Box wollen, und die einzige Option für ein Wildcard.
Nach der Umstellung ausstellen. Gültig, hinterlässt aber eine Lücke, in der die Seite live auf der neuen IP steht, ohne Zertifikat, was bei allem mit HSTS keine Warnung ist, die Ihre Besucher wegklicken können. Nur sinnvoll für eine brandneue Domain, die noch niemand besucht hat.
Für welchen Weg Sie sich auch entscheiden, verifizieren Sie direkt gegen die neue IP vor der Umschaltung, mit demselben
--resolve-Trick:curl -sSI --resolve example.com:443:203.0.113.10 https://example.com/ | head -1 echo | openssl s_client -connect 203.0.113.10:443 -servername example.com 2>/dev/null \ | openssl x509 -noout -subject -datesPrüfen Sie die Daten und dass der Subject jeden Namen abdeckt, den Sie bedienen,
wwweingeschlossen. Und wenn Sie HSTS mit einer langen Max-Age nutzen, behandeln Sie das Zertifikat als das eine, das vor der Umstellung stimmen muss statt danach — dieser Header ist ein Versprechen, das Sie jedem wiederkehrenden Besucher schon gegeben haben. - Die Umschaltung: Schreibvorgänge einfrieren, letztes Delta, den Record umstellen
Zehn Minuten tatsächliche Arbeit, und der einzige Teil mit einer Uhr darauf. Erledigen Sie es morgens, in Ihrer eigenen Zeitzone, an einem Tag, an dem Sie sonst nicht beschäftigt sind. Nie an einem Freitag.
Einfrieren. Versetzen Sie die alte Anwendung in den Wartungs- oder Read-only-Modus. Stoppen Sie die Worker, die Queue-Consumer und die Cronjobs — alles, was ohne angeschlossenen Browser schreibt. Ab hier wird nichts Neues mehr auf der alten Box geschrieben, was alles danach sicher macht:
# on the OLD server systemctl stop app-worker.service systemctl stop cron touch /var/www/maintenance.flagLetztes Delta. Noch ein rsync, jetzt mit
--delete, damit das Ziel exakt übereinstimmt, und noch ein Dump. Da der erste Durchgang schon Tage zurückliegt, bewegt das sehr wenig und dauert Sekunden:rsync -aHAXx --numeric-ids --delete --exclude-from=/root/mig/excludes \ -e 'ssh -i /root/.ssh/id_migrate' /var/www/ root@newbox:/var/www/ mysqldump --single-transaction --quick --routines --triggers --events \ --default-character-set=utf8mb4 --databases appdb | zstd -T0 \ | ssh -i /root/.ssh/id_migrate root@newbox 'zstd -dc | mysql'Prüfen. Zeilenzahlen auf beiden Seiten, noch ein Durchgang durch die Anwendung über den Hosts-Datei-Override, und die Wartungs-Flag von der neuen Box entfernen.
Umstellen. Ändern Sie den
A-Record auf die neue IP. Ändern Sie auch denAAAA-Record — das ist mit Abstand die häufigste Art, wie eine Umschaltung nur halb funktioniert. Bestätigen Sie es über einen Resolver, den Sie nicht kontrollieren:dig +short example.com A @1.1.1.1 dig +short example.com AAAA @1.1.1.1Beobachten Sie dann beide Maschinen. Traffic sollte innerhalb ein bis zwei Minuten auf der neuen erscheinen und über die nächsten fünf von der alten abklingen:
tail -f /var/log/nginx/access.log # on both, side by sideLassen Sie die alte Anwendung im Wartungsmodus, statt sie abzuschalten. Ein Nachzügler, der sie erreicht, sieht eine höfliche Seite statt eines Verbindungsfehlers, und Sie behalten die Maschine verfügbar für den Rollback, den Sie vermutlich nicht brauchen werden.
- Eine Woche beobachten, dann richtig außer Betrieb nehmen
Die Migration ist nicht fertig, wenn DNS auflöst. Sie ist fertig, wenn ein vollständiger Abrechnungs- und Cron-Zyklus ohne Überraschung vergangen ist.
Beobachten Sie in den ersten Stunden Fehlerraten statt Uptime — ein Server kann perfekt erreichbar sein und trotzdem einem Drittel der Anfragen ein 500 zurückgeben:
journalctl -u nginx -u php8.4-fpm -f awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | headArbeiten Sie sich dann eine kurze Liste entlang, denn das ist es, was nach einem Umzug tatsächlich kaputtgeht, und nichts davon kündigt sich an: Cronjobs und systemd-Timer, die auf der neuen Box laufen (
systemctl list-timersgegen das Inventar, das Sie in Schritt zwei erstellt haben); ausgehende Mail, die ankommt und nicht im Spam landet; geplante Backups, die auf den neuen Server zeigen, statt weiterhin den alten zu archivieren; jeder Dritte mit Ihrer IP-Adresse auf einer Allowlist — ein Zahlungsdienstleister, eine API, die Firewall eines Partners; und der monatliche Job, der sich erst am Ersten des Monats beweist.Lassen Sie den alten Server laufen, im Wartungsmodus, unangetastet, für mindestens eine Woche. Er ist Ihr Rollback und Ihre Referenzkopie, und er ist die paar Dollar, die er kostet, allemal wert. Schließen Sie ihn dann der Reihe nach ab: Rotieren Sie jedes Secret, das er lesen konnte, erstellen Sie ein letztes verschlüsseltes Archiv an einem dritten Ort, überschreiben Sie die Anwendungs- und Datenbankverzeichnisse, lassen Sie die Vernichtungs- oder Neuinstallationsroutine des Anbieters laufen, und kündigen Sie erst dann — nachdem Sie das Verlängerungsdatum geprüft haben, denn ein zusätzlicher Monat Rollback-Versicherung ist meist der bessere Tausch.
Setzen Sie zuletzt die TTL wieder auf 3600 hoch, jetzt, wo Sie die Fünf-Minuten-Umkehrbarkeit nicht mehr brauchen, und aktualisieren Sie, welche Dokumentation Sie auch führen, mit der neuen Adresse. Ihr zukünftiges Ich wird es, irgendwann später um 2 Uhr nachts, extrem zu schätzen wissen, dass das Runbook zum Server passt.
Mail migriert nicht mit dem Rest
Hat der alte Server Mail versendet — und sei es nur Passwort-Resets —, behandeln Sie das als eine zweite, langsamere Migration, die parallel zur ersten läuft. Zustellbarkeit ist ein Reputationssystem, und die Reputation hängt an der IP-Adresse und der Domain, nicht an der Software, die Sie hinüberkopiert haben.
Vier Records entscheiden, ob Ihre Mail gelesen oder verworfen wird, und drei davon enthalten Dinge, die sich ändern, wenn der Server es tut:
- SPF listet auf, wer für Ihre Domain senden darf. Enthält Ihrer ein
ip4:-Literal, ist es jetzt falsch. Fügen Sie die neue IP vor der Umschaltung hinzu und entfernen Sie die alte eine Woche danach — beide Adressen ein paar Tage lang zu autorisieren kostet nichts und deckt die Überlappung ab. - DKIM signiert die Nachricht mit einem privaten Schlüssel. Kopieren Sie den Schlüssel mitsamt dem Rest der Konfiguration hinüber, und der Selector funktioniert weiter. Erzeugen Sie stattdessen einen frischen Schlüssel, müssen Sie den neuen Selector veröffentlichen und darauf warten, also kopieren Sie ihn, sofern Sie keinen Grund dagegen haben.
- DMARC sagt Empfängern, was zu tun ist, wenn die ersten beiden fehlschlagen. Sind Sie auf
p=rejecteingestellt, ist ein kaputtes SPF während des Fensters keine Warnung, sondern stille Löschung. Erwägen Sie, für die Migrationswoche aufp=nonezurückzustufen und es danach wieder zurückzusetzen. - PTR ist der oben genannte Reverse-Record. Eine neue IP hat einen generischen, bis Sie einen anderen anfordern, und mehrere große Anbieter lehnen Mail von generischen Reverse-Namen rundheraus ab.
Die ehrliche Erwartung: Eine brandneue IP startet ganz ohne Reputation, was nicht dasselbe ist wie eine gute. Das Volumen steigert sich über Tage, nicht Stunden. Wenn Mail für Sie geschäftskritisch ist, lassen Sie den alten Server eine Woche nach dem Umzug am Leben und weiter senden, statt in einem Schritt umzuschalten — und wenn es geschäftlich kritisch ist, ist ein dedizierter Relay die bessere Antwort als beide Boxen.
Zurückrollen, ohne es schlimmer zu machen
Der Sinn eines Rollback-Plans ist nicht, dass Sie erwarten, ihn zu benutzen. Er besteht darin, dass Sie mit einem Plan um 10 Uhr morgens ruhig umschalten können statt nervös um 2 Uhr nachts, und Ruhe ist es, was Fehler tatsächlich verhindert.
Ihr Rollback ist einfach, und er bleibt genau so lange einfach, wie die alte Datenbank noch maßgeblich ist: den A-Record zurückändern. Mit einer 300-Sekunden-TTL sind Sie in fünf Minuten wiederhergestellt. Dieses Fenster — zwischen der Umstellung und dem ersten Schreibvorgang, der nur auf der neuen Box existiert — ist Ihr kostenloses Rückgängig, und deshalb bleibt der alte Server mindestens eine Woche lang laufen, unangetastet und ungelöscht.
Was es ruiniert, ist Split-Brain: Schreibvorgänge, die auf beiden Maschinen landen. Jetzt ist keine der beiden Datenbanken mehr korrekt, und sie von Hand abzugleichen ist schlimmer als jede Ausfallzeit, die Sie vermeiden wollten. Drei Gewohnheiten verhindern das vollständig:
- Versetzen Sie die alte Anwendung zu Beginn des Fensters in den Read-only- oder Wartungsmodus, statt darauf zu vertrauen, dass DNS bereits aufgehört hat, Traffic zu schicken. DNS ist ein Hinweis; ein gestoppter Dienst ist eine Tatsache.
- Beobachten Sie nach der Umstellung das Access-Log des alten Servers, nicht das des neuen. Anfragen, die dort noch ankommen, sind Ihre Nachzügler, und wenn dieses Rinnsal versiegt, ist die Migration wirklich abgeschlossen.
tail -f /var/log/nginx/access.logist das ganze Werkzeug. - Sobald Sie den ersten echten Schreibvorgang auf der neuen Box akzeptiert haben, ist ein Rollback keine DNS-Änderung mehr — es ist eine Wiederherstellung. Entscheiden Sie bewusst, wann Sie diese Linie überschreiten, und sagen Sie es laut, wenn Sie zu zweit sind.
Legen Sie sich vor dem Start eine Abbruchregel fest: Wenn der neue Stack, sagen wir, innerhalb von dreißig Minuten nicht korrekt bedient, setzen Sie den Record zurück, holen sich den Abend zurück und beheben es, ohne dass eine Uhr läuft. Migrationen laufen schlecht, wenn Leute weiter vorwärts drängen, weil Umkehren sich wie Versagen anfühlt. Ist es nicht; es ist die billige Option, und sie ist nur für eine streng begrenzte Zeit verfügbar.
Außerbetriebnahme: rotieren, löschen, verifizieren, dann kündigen
Eine Woche nach der Umschaltung ist der alte Server eine vollständige, laufende, unbeaufsichtigte Kopie Ihrer Daten auf einer Infrastruktur, der Sie keine Aufmerksamkeit mehr schenken. Er ist zu diesem Zeitpunkt auch die am wenigsten gepatchte Maschine, die Sie besitzen. Erledigen Sie den Rest in dieser Reihenfolge:
- Rotieren Sie alles, was die alte Box lesen konnte. Anwendungs-Secrets, API-Tokens, Datenbank-Passwörter, SMTP-Zugangsdaten, Signierschlüssel für Webhooks, jedes Wallet-RPC-Passwort. Gehen Sie von einer Offenlegung aus, denn das Gegenteil können Sie nicht beweisen. Wenn Sie für die Migration einen frischen SSH-Schlüssel erzeugt haben, ist jetzt der Zeitpunkt, an dem die alten autorisierten Schlüssel rausfliegen.
- Erstellen Sie ein letztes Archiv — einen verschlüsselten restic- oder Borg-Snapshot auf ein Ziel, das keine der beiden Maschinen ist. Sie werden es genau einmal brauchen, sechs Wochen später, für eine Datei, an die sich niemand erinnert hat.
- Überschreiben Sie die Daten. Auf einem VPS können Sie das physische Medium nicht verifizieren, also tun Sie, was Sie können:
shredoder überschreiben Sie die Anwendungs- und Datenbankverzeichnisse, und lassen Sie dann die Neuinstallations- oder Vernichtungsroutine des Anbieters laufen. Verschlüsselung im Ruhezustand von Anfang an macht das billig; ohne sie verlassen Sie sich auf die Löschrichtlinie von jemand anderem. - Verifizieren, dann kündigen. Bestätigen Sie, dass die neue Box eine volle Woche lang alles bedient hat, einschließlich des monatlichen Cronjobs, an den niemand denkt, und bestätigen Sie, dass auf der alten Box nichts mehr auflöst. Kündigen Sie dann — und prüfen Sie zuerst das Verlängerungsdatum, denn ein zusätzlicher Monat Rollback-Versicherung zu bezahlen ist oft klüger, als acht Dollar zu sparen.
Löschen Sie das alte Konto selbst zuletzt, und erst, wenn Sie sicher sind. Support-Tickets, Rechnungen und der eine oder andere vergessene Nebendienst leben tendenziell dort, und ein Konto, in das Sie sich nicht einloggen können, ist ein unpraktischer Ort, um einen DNS-Record zu entdecken, den Sie zu verschieben vergessen haben.
Ein Zeitplan, der funktioniert
Über eine Woche verteilt ist nichts davon stressig. Zusammengepresst in einen Abend ist es das alles.
- Tag −7. Jede TTL auf 300 senken. Den alten Server inventarisieren. Den neuen bestellen und dessen IP, dessen rDNS und dessen Route prüfen.
- Tag −5. Die neue Box härten. Den Stack installieren. Erster vollständiger
rsync, der langsame — jeder folgende Durchlauf bewegt nur noch das Delta. - Tag −3. Einen Datenbank-Dump auf der neuen Box wiederherstellen und die Anwendung hochfahren. Das Ganze über einen Hosts-Datei-Override testen. Beheben, was kaputt ist, solange nichts auf dem Spiel steht, denn irgendwann wird es das.
- Tag −1. TLS auf dem neuen Server ausstellen. Die Zertifikatskette bestätigen und, falls Sie es nutzen, dass HSTS aus einem kleinen Fehler keinen unanklickbaren macht. Die neue IP zu SPF hinzufügen. Erneut prüfen, dass jede TTL tatsächlich gesunken ist.
- Tag 0, morgens. Wartungsmodus auf der alten Box. Letzte Delta-Synchronisierung. Letzter Dump und letzte Wiederherstellung. Zeilenzahl-Check. Den A-Record umstellen — und die AAAA. Beide Access-Logs beobachten.
- Tag +1 bis +7. Der alte Server bleibt oben, unangetastet. Logs, Mail und den Ruf der neuen IP beobachten. Die monatlichen Jobs mindestens einmal laufen lassen, wenn möglich.
- Tag +7. Secrets rotieren, letztes Archiv, löschen, verifizieren, kündigen.
Der mit Abstand beste Indikator für eine langweilige Migration ist, dass Schritt eins eine Woche vor Schritt fünf passiert ist. Fast alles, was bei einem Serverumzug schiefgeht, ist eine TTL, die um elf Uhr nachts immer noch auf 86400 stand.
Häufige Fragen
Kann eine VPS-Migration wirklich ohne Ausfallzeit ablaufen?
Buchstäblich null, mit durchgehend auf beiden Maschinen akzeptierten Schreibvorgängen, erfordert Replikation und eine gemeinsame oder geclusterte Datenbank — ein echtes Problem, und das falsche für einen einzelnen Server. Was zuverlässig erreichbar ist, ist, dass kein Besucher einen Fehler sieht und kein Schreibvorgang verloren geht: ein kurzes Read-only-Fenster während der letzten Synchronisierung, wobei DNS schon auf einer 300-Sekunden-TTL steht, sodass die Umschaltung selbst nur Minuten dauert. In der Praxis sind das ein bis fünf Minuten Wartungsseite, was sich bei fast jeder Website nicht von null unterscheiden lässt und weitaus sicherer ist als die Alternative.
Wie lange dauert DNS-Propagation eigentlich?
Es gibt keine Propagation. Nichts wird irgendwohin gepusht — Resolver cachen Ihren Record einfach für die Anzahl an Sekunden, die Ihre TTL angibt, und fragen erneut, wenn sie abläuft. Die ehrliche Antwort ist also „so lange wie die TTL, die galt, als Sie die Änderung vorgenommen haben“. Bei einer TTL von 300, eine Woche vorher gesetzt, ist praktisch jeder innerhalb von fünf Minuten auf der neuen Adresse. Bei den 86400, auf die viele Registrare immer noch standardmäßig stehen, schicken manche Resolver noch einen vollen Tag lang Traffic zum alten Server. Deshalb ist das Senken der TTL Schritt eins und nicht Schritt neun.
Kann ich meine IP-Adresse behalten, wenn ich den Host wechsle?
Nur, wenn Sie den Adressraum selbst besitzen und ihn vom neuen Anbieter announcen lassen können, was bedeutet, RIPE- oder ARIN-Mitglied mit eigener Allokation zu sein — realistisch für ein Unternehmen, nicht für einen einzelnen Server. Für alle anderen bedeutet ein neuer Host eine neue IP, weshalb Sie genau deshalb ihren Ruf und ihr Reverse-DNS vor der Umschaltung prüfen, statt danach. Bei uns werden Adressen gegen Spamhaus und mehr als hundert weitere Listen geprüft und aus risikosegmentierten Pools vergeben, statt von wem auch immer sie zuletzt recycelt zu werden, aber es selbst zu prüfen dauert fünf Minuten und lohnt sich immer.
Sollte ich stattdessen ein Disk-Image oder ein Migrationstool des Anbieters verwenden?
Wenn beide Seiten derselbe Anbieter und derselbe Hypervisor sind, ist eine Image-Wiederherstellung in Ordnung und viel schneller. Anbieterübergreifend ist das meist eine Falle: Das Image trägt die Netzwerkkonfiguration, Kernel-Module, Treiber und Hardware-Annahmen der alten Maschine mit sich, und Sie verbringen den Abend damit, ein System zu debuggen, das in eine Maschine bootet, die nicht mehr existiert. Eine saubere Installation plus eine durchdachte Kopie Ihrer Daten und Konfiguration gibt Ihnen einen Server, den Sie verstehen, und wirft den angesammelten Ballast des alten ab. Migrieren ist die günstigste Gelegenheit, die Sie je bekommen werden, um Dinge hinter sich zu lassen.
Was ist mit einer Datenbank, in die ständig geschrieben wird?
Zwei Optionen, in aufsteigender Reihenfolge des Aufwands. Die einfache ist das Read-only-Fenster in Schritt neun: Ein --single-transaction-Dump einer stark genutzten, aber normal großen Datenbank dauert Sekunden bis ein paar Minuten, und eine Wartungsseite für diese Zeit ist ein fairer Tausch. Die gründliche ist Replikation — den neuen Server Tage im Voraus als Replika aufsetzen, ihn synchron halten lassen, und ihn dann während des Fensters befördern. Das reduziert das Einfrieren auf Sekunden, auf Kosten eines echt komplexeren Setups. Wählen Sie die zweite nur, wenn die erste nicht akzeptabel ist, und improvisieren Sie sie nie in der Nacht selbst.
Schadet ein Hostwechsel meinem Suchranking?
Für sich genommen nicht. Google indexiert Hostnamen, keine IP-Adressen, und ein Umzug, bei dem URLs und Inhalt identisch bleiben, ist praktisch unsichtbar. Was Sie tatsächlich kostet, ist das, was eine schlechte Migration typischerweise begleitet: Seiten, die 5xx zurückgeben, während Crawler sie besuchen, ein Zertifikatsfehler, eine robots.txt, die aus einer Staging-Kopie stammt und Disallow: / enthält, oder Redirects, die still und leise ihre Form geändert haben. Prüfen Sie robots.txt, Ihre Canonical-Tags und eine Handvoll echter URLs sofort nach der Umstellung. Wenn die Seite auf der neuen IP dieselben Antworten liefert wie auf der alten, gibt es nichts, wovon man sich erholen müsste.
Funktionieren meine TLS-Zertifikate auf dem neuen Server noch?
Ja — Zertifikate werden für Domainnamen ausgestellt, nicht für IP-Adressen, sodass das Hinüberkopieren von /etc/letsencrypt Ihnen sofort ein gültiges Zertifikat auf der neuen Box gibt. Die Komplikation ist die Erneuerung, nicht die Gültigkeit: Eine HTTP-01-Challenge braucht die Domain, die auf die erneuernde Maschine zeigt, also schlägt die Erneuerung dort fehl, bis Sie DNS umstellen. Kopieren Sie die Zertifikate vor der Umschaltung, stellen Sie um, und bestätigen Sie dann, dass der Erneuerungs-Timer auf dem neuen Server erfolgreich läuft. Falls Sie ein unabhängiges Zertifikat vor der Umstellung brauchen — oder ein Wildcard —, verwenden Sie stattdessen eine DNS-01-Challenge.

