← Volver a la lista

Local a la nube: WordPress Migración Soluciones de cadena completa, respaldo de datos, restauración de bases de datos, etc.

itadol5j

I. Antecedentes y desafíos básicos

1. La escena migratoria

Medio ambiente de desarrollo locallocalhost:8081Otros organizadores 666.comEsto implica el despliegue de contenedores (Docker) y la migración interambiental de bases de datos.

2. Cuestiones básicas

  • Primera página Saltar inusual: visitas 666.com Autojump a localhost:8081porque la base de datos contiene nombres de dominio antiguos.
  • Riesgo de coherencia de los datos: Los datos de contenedores Docker no están respaldados y el proceso de migración puede perder datos de configuración o plugin.

II. Análisis de las causas profundas del problema

  1. Nombre de dominio antiguo de base
    • wp_options Cuadro siteurl y home campo no se actualiza.
    • Los artículos, metadatos y datos secuenciados (por ejemplo, menús, herramientas pequeñas) contienen direcciones antiguas codificadas.
  2. Falta de gestión de datos de Docker
    • No adoptar un volumen de datos o mysqldump Copia de seguridad completa, contenedores de manipulación directa que dan lugar a una pérdida irreversible de datos.
  3. Interferencia de configuración del servidor
    • Reglas redirectivas del viejo ambiente (por ejemplo, .htaccessNo está claro.

III. Soluciones de cadena completa

Fase 1: Docker Data Backup and Migration

1. Backup MySQL Database Método 1: Adopción mysqldump Exportar archivo 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étodo 2: Backup MySQL Data Volume
# 备份数据卷(宿主机操作)  
docker run --rm -v mysql_data:/source -v /host/backup:/backup alpine tar czf /backup/mysql_data.tar.gz -C /source .  
2. Importar bases de datos MySQL en el entorno de producción
# 导入 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. Validación de la integridad de los datos
# 检查关键表数据  
docker exec prod-mysql-container mysql -uroot -p123456 -e "USE wordpress; SELECT COUNT(*) FROM wp_posts;"  

Fase II: restauración de saltos de nombre de dominio

1. Nombres de dominio antiguos de la base de datos de reemplazo de seguridad Selección y operación de herramientas
  • BetterSearchReplace Plugin:
    1. Sustitución de biblioteca completa localhost:8081 Sí. 666.comNo lo sé.
    2. Resize Maximum Page to 500, procesamiento por lotes de mesas grandes.
  • Herramienta de línea de comando Search-Replace-DB:php srdb.cli.php -h localhost -u root -p 123456 -n wordpress -s "localhost:8081" -r "666.com" -g  
2. Actualización de fuerza Configuración de WordPress
// 在 wp-config.php 中定义绝对域名  
define('WP_HOME', 'https://666.com');  
define('WP_SITEURL', 'https://666.com');  
3. Limpieza de residuos de configuración del servidor
  • Quitar la vieja norma de orientación:# .htaccess 中删除旧规则
    RewriteRule ^(.*)$ https://localhost:8081/$1 [R=301,L] # 删除此行

Fase III: Certificación y optimización

  1. Función Autenticación
    • Acceso a la página principal:curl -I https://666.com Código de estado de verificación 200 No 301/302No lo sé.
    • Comprueba aleatoriamente si artículos, páginas, URLs de archivos multimedia apuntan a nuevos nombres de dominio.
  2. Optimización del rendimiento
    • Configure la consulta de la base de datos Redis o Memcached cache.
    • Uso docker system prune Limpia la imagen del contenedor inválido.

Riesgos operacionales y circunvención

Situación de riesgoEjecuciónMedidas de referencia
Conflicto por emisión de bases de datosEmpaquetado de arranque falló, pista de registro negadaArmonizar el grupo de usuarios de los desplazamientos de datos antes de la copia de seguridad 999:999(MySQL Default)
Daños resultantes de datosDiseño de página es confundido o funciones de plugin son anormalesUso -g Parámetros para procesar datos serializados
Archivo de respaldo incompletoFalta la estructura del reloj importadoDoble respaldo (SQL + volumen de datos) para restaurar MD5 Hash

V. Lecciones adquiridas y procesos de normalización

1. Proceso normalizado de migración

  1. Local Environment Backup:# 备份数据库 + 数据卷  
    docker exec mysql-container mysqldump -uroot -p123456 wordpress > backup.sql  
    docker volume inspect mysql_data > volume_backup.json  
  2. Preconfiguración del entorno de producción:
    • Crea la misma versión del contenedor MySQL con antelación, monta el volumen de datos.
  3. Incremental Data Sync:
    • Uso rsync Sync wp-content/uploads .

2. Ejemplo de scripts automatizados

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

Mecanismos de vigilancia duraderos

  • Monitor de registro:docker logs -f prod-mysql-container | grep -E "ERROR|WARNING"  
  • Examen de la salud:curl -s https://666.com/health-check | grep "OK"  

VI. Valor final

Mediante esta práctica migratoria, "Containerization WordPress método de 4 pasos.":

  1. Copia de seguridad estandarizada: SQL + Seguro Doble Volumen de Datos.
  2. Rehabilitación de instrumentos: Datos de reemplazo de seguridad combinados con plugins y herramientas de línea de comandos.
  3. autenticación atómicaPáginas de comprobación graduales, API, recursos multimedia.
  4. Supervisión automatizadaRegistros, cheques de salud, pruebas regulares.

Esta opción podría proporcionar una plantilla genérica para el transporte de aplicaciones de contenedorización y reducir los umbrales técnicos resultantes de diferencias ambientales.