Buscar y reemplazar valores en base de datos (MySQL) – Migrar WordPress – Search Replace DB

¡Hola a todos!. En ésta oportunidad les traigo un ¿script? (pienso que es más un aplicativo web + scripts…) para poder hacer búsquedas de valores en una base de datos completa de MySQL y reemplazarlos por lo que queramos; o sea, es como entrar tabla por tabla buscando (select) y sustituyendo (replace), cosa que manualmente llevaría mucho tiempo, por ejemplo si se trata de una base de datos de WordPress… sí, una vez lo tuve que usar precisamente para migrar un sitio de WordPress, pero bueno; en teoría, aplica para cualquier BD que tengamos en MySQL.

Lo bueno de ésta herramienta es, además de automatizar el proceso de buscar y reemplazar, que podemos hacer pruebas antes para ver si están bien los datos que hemos colocado.

Sin más, la herramienta que les propongo se llama Search Replace DB, el cual debemos descargar y colocar en nuestra carpeta de publicación web; lo más común es que, si utilizamos una BD MySQL, generalmente usemos la plataforma LAMP (Linux, Apache, MySQL y PHP); éste será nuestro caso, por cuanto nuestra carpeta de publicación se encuentra en /var/www/html

Podemos descargarlo desde la página del proyecto o podemos traerlo mediante el comando git; para esto, debemos asegurarnos que lo tengamos instalado así:

sudo apt install git

Una vez instalado, traemos el código fuente del «script» en una carpeta llamada srdb dentro de nuestra carpeta de publicación web:

git clone https://github.com/interconnectit/Search-Replace-DB.git /var/www/html/srdb

Tendría que aparecer algo así:

Dentro de la carpeta, hay una subcarpeta llamada «.git» (disque oculta), la cual no pesa mucho pero podríamos prescindir de ella, por cuanto la eliminamos:

sudo rm -R /var/www/html/srdb/.git

También, debemos de asignarle permisos a la carpeta y establecer el usuario y grupo propietario, ambos de forma recursiva; o sea, ejecutar las siguientes líneas de comando:

sudo chmod -R 777 /var/www/html/srdb
sudo chown -R root:www-data /var/www/html/srdb

En éste punto, ¡SUMAMENTE IMPORTANTE!, es hacer respaldo de la base de datos a la que queremos aplicar éste procedimiento. Podría ser…

mysqldump -u root -p miBaseDeDatos > ~/miBaseDeDatos.sql

Bien, ahora les pongo el siguiente ejemplo con el que se comprenderá bien la función de éste script. Queremos migrar nuestro sitio de Worpress que está en http://www2.ingdiaz.org hacia, digamos, un nuevo dominio el cual es http://www.otrositio.com en otro servidor.

En éste caso, de una forma manual, tendríamos que copiar todos los archivos de WordPress respectivos a la nueva ubicación, hacer respaldo de la Base de Datos original y restaurarlo en el nuevo servidor; ahora, como es de suponer, el cambio de nombre de dominio afectará todo… entonces, nuestra tarea es sustituir todas las referencias que se tengan de «www2.ingdiaz.org» por el nuevo dominio, el cual es «www.otrositio.com«.

Entramos entonces, mediante nuestro navegador favorito, a la url de acceso al script, o sea http://[mi_sitio]/srdb o sea, http://www2.ingdiaz.org/srdb

Si tuviéramos una instalación de WordPress o Drupal (de éste último no estoy seguro), la información de la sección «database» se rellena automáticamente, por cuanto no aparecerá ningún mensaje de error de Acceso denegado; Si se trata de otra base de datos (o sea que no es Wodpress ni Drupal), para solventar éste inconveniente, rellenamos manualmente la información:

  • name → Nombre de la base de datos.
  • user → Usuario con privilegios en la base de datos.
  • pass → Contraseña del usuario con privilegios en la BD.
  • host → El host… seguramente será nuestro propio equipo, o sea, localhost o 127.0.0.1
  • port → Por defecto, el 3306, puerto de MysQL

Una vez llenada la información, se da clic en el botón «update details» que está en la sección «actions«; si todo esta bien, se desaparece el recuadro rojo con el error y continuamos.

Dentro de la sección «search/replace«, ingresamos en «replace» lo que vamos a buscar y en «with» como queremos que quede (el cambio); adicional, podemos filtrar las tablas en donde se aplique éste proceso o, como es nuestro caso, seleccionamos que se aplique a todas las tablas (all tables).

Ahora, es importante hacer una prueba para ver que todo este bien con los valores que queremos buscar/reemplazar; damos clic entonces a la opción «dry run«, en la sección «actions«. Se nos mostrará en la parte de abajo los resultados.

Desde aquí, podemos ver cuántas coincidencias hay y, si damos clic en «view changes» podemos ver el registro/campo específico donde se encontró el valor el cual se tendría que sustituir. Como ejecutamos la opción de prueba (Dry run), no se realizará ningún cambio, pero nos da una idea de qué es lo que hará.

Al dar clic en la opción «live run«, ejecuta el script y se hacen todos los cambios respectivos, pero no sin antes advertirnos si realmente queremos realizar ésta acción.

Se realizan los cambios y podemos ver un resumen de todo lo realizado.

Para una migración real, es probable que éste proceso se repita unas cuantas veces dependiendo de los cambios que se requieran.

Un detalle muy importante es eliminar los rastros de éste script dado que, si se nos olvida hacerlo, podríamos dejar un gran problema… cualquiera tendría la posibilidad de ejecutarlo, conocer las credenciales de acceso (al tratarse de un WordPress) y de cambiar una gran cantidad de cosas… entonces, abajo del script, aparece una opción para eliminarlo:

Y eso sería todo. Creo que es una buena herramienta a tomar en cuenta para éste tipo de migraciones de sitios.

¡Saludos!


Comentarios por Facebook

comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*