← Retour à la liste

Local au cloud : WordPress Migration Full Chain Solutions, Sauvegarde de données, Restauration de bases de données, etc.

itadol5j

I. Historique et principaux problèmes

1. Situation des migrations

Environnement de développement locallocalhost:8081Autres organisateurs 666.comIl s'agit du déploiement de conteneurs (Docker) et de la migration environnementale des bases de données.

2. Questions de base

  • Première page Saut inhabituel: visites 666.com Accélérer localhost:8081parce que la base de données contient des noms de domaine anciens.
  • Risque de cohérence des données: Les données du conteneur Docker ne sont pas sauvegardées et le processus de migration peut perdre des données de configuration ou de plugin.

II. Analyse des causes profondes du problème

  1. Nom de domaine ancien de la base de données
    • wp_options Tableau siteurl et home champ n'est pas mis à jour.
    • Les articles, métadonnées et données séquencées (p. ex. menus, petits outils) contiennent des anciennes adresses codées en dur.
  2. Docker Gestion de données manquante
    • Non-adoption d ' un volume de données ou mysqldump Une sauvegarde complète, des conteneurs de manutention directe entraînant une perte irréversible de données.
  3. Interférence de configuration du serveur
    • Règles rédirectives de l'ancien environnement (par exemple .htaccessPas autorisé.

III. Solutions à chaîne complète

Phase 1: Sauvegarde des données Docker et migration

1. Sauvegarde de la base de données MySQL Méthode 1: Adoption mysqldump Exporter un fichier SQL
# 导出数据库(容器内操作)  
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  
Méthode 2: Volume de données de sauvegarde MySQL
# 备份数据卷(宿主机操作)  
docker run --rm -v mysql_data:/source -v /host/backup:/backup alpine tar czf /backup/mysql_data.tar.gz -C /source .  
2. Importer les bases de données MySQL dans l'environnement de production
# 导入 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. Validation de l ' intégrité des données
# 检查关键表数据  
docker exec prod-mysql-container mysql -uroot -p123456 -e "USE wordpress; SELECT COUNT(*) FROM wp_posts;"  

Phase II : restauration des sauts de noms de domaine

1. Les anciens noms de domaines de la base de données de remplacement de la sécurité Sélection et fonctionnement des outils
  • Meilleure rechercheRemplacer le plugin:
    1. Remplacement complet de la bibliothèque localhost:8081 Oui 666.comJe ne sais pas.
    2. Redimensionner la page maximale à 500, traitement par lots de grandes tables.
  • Outil de ligne de commande Search-Replace-DB:php srdb.cli.php -h localhost -u root -p 123456 -n wordpress -s "localhost:8081" -r "666.com" -g  
2. Mettre à jour la configuration WordPress
// 在 wp-config.php 中定义绝对域名  
define('WP_HOME', 'https://666.com');  
define('WP_SITEURL', 'https://666.com');  
3. Nettoyage des résidus de configuration du serveur
  • Supprimer l'ancienne règle d'orientation:# .htaccess 中删除旧规则
    RewriteRule ^(.*)$ https://localhost:8081/$1 [R=301,L] # 删除此行

Phase III: Certification et optimisation

  1. Authentification des fonctions
    • Accès à la page d'accueil :curl -I https://666.com Vérifier le code d'état 200 Pas 301/302Je ne sais pas.
    • Vérifie au hasard si des articles, des pages, des fichiers multimédias URL pointent vers de nouveaux noms de domaine.
  2. Optimisation des performances
    • Configurez la requête Redis ou Memcached cache.
    • Utilisation docker system prune Efface l'image du conteneur invalide.

Risques opérationnels et contournement

RisquesRendementMesures de refus
Conflit de permission de base de donnéesDémarrage de l'emballage échoué, signe de log refuséHarmoniser le groupe d'utilisateurs des défilements de données avant la sauvegarde 999:999(Par défaut MySQL)
Endommagement des données séquentiellesLa mise en page est confuse ou les fonctions de plugin sont anormalesUtilisation -g Paramètres pour traiter les données sérialisées
Fichier de sauvegarde incompletLa structure de la montre importée est manquanteDouble sauvegarde (SQL + volume de données) pour restaurer MD5 Hash

V. Enseignements tirés et processus de normalisation

1. Processus de migration normalisé

  1. Sauvegarde de l'environnement local:# 备份数据库 + 数据卷  
    docker exec mysql-container mysqldump -uroot -p123456 wordpress > backup.sql  
    docker volume inspect mysql_data > volume_backup.json  
  2. Préconfiguration de l'environnement de production:
    • Crée la même version du conteneur MySQL à l'avance, monte le volume de données.
  3. Synchronisation des données différentielles:
    • Utilisation rsync Synchronisation wp-content/uploads .

2. Exemple de scripts automatisés

#!/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  

Mécanismes de surveillance de longue durée

  • Moniteur de journal:docker logs -f prod-mysql-container | grep -E "ERROR|WARNING"  
  • Dépistage sanitaire:curl -s https://666.com/health-check | grep "OK"  

VI. Valeur finale

Par cette pratique migratoire, "Containerization WordPress 4-step method.":

  1. Sauvegarde normalisée: Assurance double volume SQL + Data.
  2. Réhabilitation des outils: Données de remplacement de sécurité combinées avec des plugins et des outils en ligne de commande.
  3. Authentification atomiqueVérifier les pages, l'API, les ressources multimédias.
  4. Surveillance automatiséeLogs, bilans de santé, tests de recul réguliers.

Cette option pourrait fournir un modèle générique pour le transport des applications de conteneurisation et réduire les seuils techniques résultant des différences environnementales.