Desarrollo y bases de datos
Reemplazo y cambios masivos sobre todo el contenido de una base de datos o aplicación
Podemos necesitar una búsqueda y reemplazo masivo al cambiar el dominio o activar HTTPS. En WordPress no debe hacerse con un UPDATE ... REPLACE arbitrario: muchos valores están serializados y una sustitución SQL directa puede corromper sus longitudes.
Preparación obligatoria
- Crea un entorno staging desde una copia reciente de producción.
- Exporta la base antes de cada ensayo y verifica el fichero:
umask 077 wp db export "$HOME/wp-antes-reemplazo.sql" && test -s "$HOME/wp-antes-reemplazo.sql" && sha256sum "$HOME/wp-antes-reemplazo.sql" > "$HOME/wp-antes-reemplazo.sql.sha256"
Usa un nombre nuevo para cada copia y comprueba que wp db export termina correctamente. El checksum permite detectar cambios en el archivo; la prueba de restauración es la que comprueba si sirve para recuperar la base. Protege los ficheros fuera de la carpeta pública:
chmod 400 "$HOME/wp-antes-reemplazo.sql" "$HOME/wp-antes-reemplazo.sql.sha256" sha256sum -c "$HOME/wp-antes-reemplazo.sql.sha256"
- Descarga la copia y prueba su importación en una base vacía independiente.
- Define el valor exacto de origen, destino, tablas y columnas. No ejecutes una búsqueda sobre toda la base si solo necesitas modificar contenido de entradas.
Previsualizar con WP-CLI
Antes de continuar, instala y comprueba WP-CLI en la cuenta. WP-CLI mantiene correctamente los datos serializados. Para cambiar enlaces dentro del contenido de las entradas, limita la operación a la tabla y columna necesarias y ejecuta primero --dry-run:
wp search-replace 'http://dominio.example' 'https://dominio.example' wp_posts \ --include-columns=post_content \ --precise \ --report-changed-only \ --dry-run
Sustituye wp_posts por el nombre real si tu instalación utiliza otro prefijo. El modo --dry-run informa de coincidencias, pero no modifica registros: para revisar cómo quedan las entradas debes ejecutar el cambio real sobre el clon.
Revisa el número de cambios previsto. Si incluye tablas o columnas no previstas, restringe la búsqueda antes de ejecutar el cambio real en staging. Comprueba después una muestra de las entradas modificadas antes de aplicar el procedimiento en producción.
Cuando el ensayo, la copia y la ruta de reversión estén validados, repite el mismo comando sin --dry-run primero en staging. Para producción, crea una nueva exportación, detén las escrituras, ejecuta exactamente el comando validado y comprueba enlaces, widgets, menús, bloques y registros de error antes de reabrir la web.
Si la validación falla, mantén detenidas las escrituras y restaura wp-antes-reemplazo.sql. Confirma que la web vuelve a su estado anterior antes de retirar el mantenimiento.
Alternativas con interfaz
WordPress dispone de plugins para realizar estas tareas mediante una interfaz gráfica, pudiendo establecer la búsqueda, el reemplazo y las tablas afectadas. Son más lentos que WP-CLI en bases grandes, pero también deben mantener correctamente los datos serializados.
También con estos plugins son obligatorios la exportación, el ensayo en staging, la vista previa y la selección explícita de tablas. No uses una opción global sin revisar su alcance.
Una opción con vista previa es:
Si estás cambiando todo el dominio
El ejemplo solo modifica post_content; no cambia ajustes, widgets, menús ni tablas de plugins. Inventaría esas ubicaciones y prepara el alcance correspondiente. No reemplaces automáticamente la columna guid: no es una URL de navegación. En WordPress multisitio revisa cada sitio y la configuración de red antes de ampliar el comando.
Consulta las opciones de wp search-replace. Para otras aplicaciones utiliza una herramienta que conozca su formato: WP-CLI no convierte una base ajena a WordPress en un caso compatible.
También te puede ayudar
- Cerrar consultas MySQL en ejecución Identifica consultas MySQL lentas o bloqueadas y distingue entre detener una sentencia y cerrar su c...
- Clonar base de datos Duplica una base MySQL creando antes el destino y sus permisos en cPanel, y copiando después estruct...
- Conexión remota y segura al servidor MySQL Protege una conexión MySQL remota mediante un túnel SSH y configura por separado las credenciales SS...
- Consultar la versión de MySQL y comprobar compatibilidad Identifica la versión real del servidor MySQL que utiliza tu aplicación, revisa compatibilidad y dis...
¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.