← Zurück zur Liste

Lokal in der Cloud: WordPress Migration Full Chain Solutions, Datensicherung, Datenbankwiederherstellung usw.

itadol5j

I. Hintergrund und Kernherausforderungen

1. Migrationsszene

Lokale Entwicklungsumgebunglocalhost:8081Sonstige Veranstalter 666.comDabei geht es um die Containerisierung (Docker) und die umgebungsübergreifende Migration von Datenbanken.

2. Kernfragen

  • First Page Jumping Ungewöhnlich: Besuche 666.com Autojump auf localhost:8081weil die Datenbank alte Domainnamen enthält.
  • DatenkonsistenzrisikoDocker-Containerdaten werden nicht gesichert und der Migrationsprozess kann Konfigurations- oder Plugin-Daten verlieren.

II. Analyse der Ursachen des Problems

  1. Datenbank alter Domainname
    • wp_options Tabelle siteurl und home Das Feld wird nicht aktualisiert.
    • Artikel, Metadaten und sequenzierte Daten (z.B. Menüs, kleine Tools) enthalten fest codierte alte Adressen.
  2. Docker Data Management fehlt
    • Nichtannahme eines Datenvolumens oder mysqldump Komplettes Backup, direktes Handling von Containern, was zu einem irreversiblen Datenverlust führt.
  3. Serverkonfigurationsstörungen
    • Redirektive Regeln der alten Umgebung (z.B. .htaccessNicht gelöscht.

III. Full Chain Lösungen

Phase 1: Docker Data Backup und Migration

1. Backup MySQL Datenbank Methode 1: Annahme mysqldump Export SQL File
# 导出数据库(容器内操作)  
docker exec dockerwordpress-db-1 mysqldump -uroot -p123456 --hex-blob --default-character-set=utf8mb4 wordpress > /tmp/backup.sql  

# 复制到宿主机  
docker cp dockerwordpress-db-1:/tmp/backup.sql /host/backup.sql  
Methode 2: Backup MySQL Datenvolumen
# 备份数据卷(宿主机操作)  
docker run --rm -v mysql_data:/source -v /host/backup:/backup alpine tar czf /backup/mysql_data.tar.gz -C /source .  
2. MySQL-Datenbanken in die Produktionsumgebung importieren
# 导入 SQL 文件(生产环境容器)  
docker cp /host/backup.sql prod-mysql-container:/tmp/backup.sql  
docker exec -i prod-mysql-container mysql -uroot -p123456 wordpress < /tmp/backup.sql  

# 或从数据卷恢复  
docker run --rm -v prod_mysql_data:/target -v /host/backup:/backup alpine tar xzf /backup/mysql_data.tar.gz -C /target  
3. Validierung der Datenintegrität
# 检查关键表数据  
docker exec prod-mysql-container mysql -uroot -p123456 -e "USE wordpress; SELECT COUNT(*) FROM wp_posts;"  

Phase II: Wiederherstellung von Domain Name Jumps

1. Sicherheitsersatzdatenbank alte Domainnamen Auswahl der Werkzeuge und Bedienung
  • BetterSearchReplace Plugin:
    1. Vollständige Bibliothek Ersatz localhost:8081 Ja 666.comIch weiß es nicht.
    2. Resize Maximale Seite auf 500, Batch-Verarbeitung von großen Tischen.
  • Search-Replace-DB Kommandozeilentool:php srdb.cli.php -h localhost -u root -p 123456 -n wordpress -s "localhost:8081" -r "666.com" -g  
2. Force Update WordPress Konfiguration
// 在 wp-config.php 中定义绝对域名  
define('WP_HOME', 'https://666.com');  
define('WP_SITEURL', 'https://666.com');  
3. Bereinigung von Serverkonfigurationsrückständen
  • Alte Orientierungsregel entfernen:# .htaccess 中删除旧规则
    RewriteRule ^(.*)$ https://localhost:8081/$1 [R=301,L] # 删除此行

Phase III: Zertifizierung und Optimierung

  1. Funktionsauthentifizierung
    • Zugang zur Homepage:curl -I https://666.com Kontrollstatuscode 200 nicht 301/302Ich weiß es nicht.
    • Prüft zufällig, ob Artikel, Seiten, Mediendateien URLs auf neue Domainnamen verweisen.
  2. Leistungsoptimierung
    • Konfigurieren Sie die Abfrage der Redis- oder Memcached-Cache-Datenbank.
    • Verwendung docker system prune Löscht das Bild des ungültigen Containers.

Betriebsrisiken und Umgehung

RisikolageLeistungAblehnungsmaßnahmen
DatenbankzulassungskonfliktPackaging-Startup fehlgeschlagen, Log-Hinweis verweigertHarmonisierung der Benutzergruppe der Datenrollen vor dem Backup 999:999(MySQL Default)
Sequente DatenschädenSeitenlayout ist verwirrt oder Plugin-Funktionen sind abnormalVerwendung -g Parameter zur Verarbeitung serialisierter Daten
Backup-Datei unvollständigDie Struktur der importierten Uhr fehltDouble Backup (SQL + Datenvolumen) zur Wiederherstellung von MD5 Hash

V. Lessons Learned und Standardisierungsprozesse

1. Standardisierter Migrationsprozess

  1. Lokale Umgebung Backup:# 备份数据库 + 数据卷  
    docker exec mysql-container mysqldump -uroot -p123456 wordpress > backup.sql  
    docker volume inspect mysql_data > volume_backup.json  
  2. Vorkonfiguration der Produktionsumgebung:
    • Erstellt die gleiche Version des MySQL-Containers im Voraus, mountet das Datenvolumen.
  3. Inkrementelle Daten Sync:
    • Verwendung rsync Sync wp-content/uploads .

2. Beispiel für automatisierte Skripte

#!/bin/bash  
# 备份脚本  
docker exec mysql-container mysqldump -uroot -p123456 wordpress > /backups/wordpress_$(date +%Y%m%d).sql  
tar -czf /backups/mysql_data_$(date +%Y%m%d).tar.gz /var/lib/docker/volumes/mysql_data  

# 恢复脚本  
docker cp /backups/wordpress_20231001.sql prod-mysql-container:/tmp/  
docker exec -i prod-mysql-container mysql -uroot -p123456 wordpress < /tmp/wordpress_20231001.sql  

Dauerhafte Überwachungsmechanismen

  • Log-Monitor:docker logs -f prod-mysql-container | grep -E "ERROR|WARNING"  
  • Gesundheitsscreening:curl -s https://666.com/health-check | grep "OK"  

VI. Endgültiger Wert

Durch diese Migrationspraxis, "Containerization WordPress 4-Schritt-Methode.":

  1. Standardisiertes BackupSQL + Datenvolumen Doppelversicherung.
  2. Werkzeugsanierung: Sicherheitsersatzdaten kombiniert mit Plugins und Kommandozeilen-Tools.
  3. Atomare AuthentifizierungPhased Check Pages, API, Medienressourcen.
  4. Automatisierte ÜberwachungProtokolle, Gesundheitskontrollen, regelmäßige Rollback-Tests.

Diese Option könnte eine generische Vorlage für den Transport von Containerisierungsanwendungen liefern und technische Schwellenwerte aufgrund von Umweltunterschieden reduzieren.