Migrar la base de datos de WordPress correctamente

- septiembre 03, 2018

Las migraciones de WordPress y de cualquier base de datos para muchos puede convertirse en un dolor de cabeza incluso con la utilización de muchos plugins que existen pero que aveces tampoco funcionan al 100% como lo deseamos y por esta razón lo mas conveniente cuando hemos agotado algunas opciones es realizar las migraciones de forma manual la cual nos garantiza el correcto remplazo de las urls dentro de la base de datos Mysql.

La base de datos es el motor principal que hace a WordPress un administrador de contenido dinámico, es aquí donde se almacenan los datos de todo lo que hacemos en nuestro administrador, el único tipo de base de datos que es aceptada por WordPress hasta el momento es conocida como MySQL desde la version 4.0 en adelante para no tener problemas de compatibilidad.

Que funciones tiene la base de datos en WordPress

Las bases de datos tanto en el mundo de internet como de WordPress son imprescindibles ya que ayudan a que la información se vaya creando, actualizando borrando y leyendo dependiendo de como lo desea el administrador de la página web.

Cada proveedor de hosting donde alojas tu página web trae consigo un gestor de base de datos en su instalación con el fin de que no te preocupes por estas instalaciones.

Como hacer migraciones seguras de la base de datos.

Cuando realizamos la migración de todo nuestro sitio web en WordPress (desarrollo -> producción) debemos de preocuparnos por dos temas en particular que son los archivos de nuestro directorio raíz y la base de datos de toda nuestra instalación que es el tema en cual nos vamos a centrar. Dentro de WordPress la configuración de nuestra base de datos se encuentra almacenada en el archivo wp-config.php el cual se encuentra en la raíz de nuestra instalación y que a la vez contiene los siguientes parámetros para nuestra base de datos.

/** Nombre de la base de datos de WordPress */
define( 'DB_NAME', 'database_name_here' );

/** Usuario de la base de datos */
define( 'DB_USER', 'username_here' );

/** Contraseña del usuario de la base de datos */
define( 'DB_PASSWORD', 'password_here' );

/** Host donde se encuentra la base de datos */
define( 'DB_HOST', 'localhost' );

/** Es la codificación de caracteres para la base de datos. */
define( 'DB_CHARSET', 'utf8' );

/** El tipo Intercalar de la base de datos. No cambie esto si tiene dudas. */
define( 'DB_COLLATE', '' );

 

Estos parámetros son necesarios para que WordPress se conecte con MySQL y la base de datos, para realizar las consultas de Creación, Actualizacion, Borrado y Lectura.

La gran mayoría de plugins de migración lo que hacen dentro de la base de datos es el remplazo de las urls que teníamos de nuestro proyecto en el servidor de desarrollo al de producción, he probado algunos pero no he quedado del todo satisfecho y por esta razón me di a la tarea de consultar una herramienta independiente que me ayudara en esta labor y es así como encontré Search and Replace Script in PHP.

Este script fue creado por interconnectit.com con el fin de ayudar al proceso de migración de sitios web basados en PHP y MySQL pero a la vez tiene características adicionales para WordPress y funciona para los otros CMS similares.

Como se utiliza

Los archivos de Search Replace DB debe de ser alojados en la raíz de la instalación de WordPress para que detecte su configuración de base de datos y comenzar a remplazar.

Por ejemplo si tiene

/misitioweb.com/index.php

 

Debe agregar el nuevo directorio en

/misitioweb.com/Search-Replace-DB/

Luego de esto podremos ingresar a realizar el remplazo desde nuestra interfaz gráfica o por medio de la consola o terminal.

Desde la interfaz gráfica visualizaremos algo muy similar a lo siguiente

search replace WordPress

En el cual aparecerán ciertos inputs autocompletados como name, user, pass, host y port, los cuales son obtenidos desde la instalación de WordPress, de esta manera solo restaría con incluir la url actual y a la que se remplazaría replace y with respectivamente, al final nos aparecerá activado el botón live run el cual comenzara a realizar el remplazo de cada una de las tablas mostrándonos los resultados al final de la aplicación.

También trae las opciones de convertir a uft8 Unicode las tablas de las base de datos como en otros formatos.

La otra forma de utilizar el script es desde la linea de comandos o terminal, esta forma es in poco mas experimentada para ocasiones en que queremos realizar remplazos de grandes cantidades de datos y es la que yo mas recomiendo.

Esta se basa en la ejecución de un script que viene dentro del directorio de Search Replace DB el cual debemos de ejecutar de la siguiente forma:

Escribir en nuestra terminal php srdb.cli.php y al lado cualquiera de los siguientes parámetros.

-h, --host

        Required. The hostname of the database server.
        
-n, --name

        Required. Database name.
        
-u, --user

        Required. Database user.
        
-p, --pass

        Required. Database user's password.
        
--port

        Optional. Port on database server to connect to.
        The default is 3306. (MySQL default port).
        
-s, --search

        String to search for or `preg_replace()` style regular
        expression.
        
-r, --replace

        None empty string to replace search with or
        `preg_replace()` style replacement.
        
-t, --tables

        If set only runs the script on the specified table, comma
        separate for multiple values.
        
-i, --include-cols

        If set only runs the script on the specified columns, comma
        separate for multiple values.
        
-x, --exclude-cols

        If set excludes the specified columns, comma separate for
        multiple values.
        
-g, --regex [no value]

        Treats value for -s or --search as a regular expression and
        -r or --replace as a regular expression replacement.
        
-l, --pagesize

        How many rows to fetch at a time from a table.
        
-z, --dry-run [no value]

        Prevents any updates happening so you can preview the number
        of changes to be made
        
-e, --alter-engine

        Changes the database table to the specified database engine
        eg. InnoDB or MyISAM. If specified search/replace arguments
        are ignored. They will not be run simultaneously.
        
-a, --alter-collation

        Changes the database table to the specified collation
        eg. utf8_unicode_ci. If specified search/replace arguments
        are ignored. They will not be run simultaneously.
        
-v, --verbose [true|false]

        Defaults to true, can be set to false to run script silently.
        
--help

        Displays this help message ;)

 

Licencia

El código se suministra bajo GPL V3 que es de fuente completamente abierta. Tenga en cuenta que esto significa que las personas pueden cambiar este código y ofrecerlo, y que otras versiones pueden ser peores … o mejores. Es un código para desarrolladores, por desarrolladores, y solo debe usar código de fuentes en las que confía.

Si conoces otros tipos de herramientas para realizar el remplazo de urls desde la base de datos de WordPress comentadlas en nuestros comentarios.


Recibirás cada semana todas nuestras actualizaciones
Puedes estar tranquilo que nunca te enviaremos SPAM
SOBRE EL AUTOR

Freelancer del mundo web y WordPressero ya hace más de 9 años creando desarrollos custom para clientes, bloguero de profesión para ayudar a nuestra comunidad, runner en la ciudad que me encuentre. Me interesé por la tecnología desde que mi papá trajo a casa la primera computadora que fue como abrirme la puerta a un mundo nuevo que todavía sigue en desarrollo. Soy de Colombia pero ahora vivo en Montreal comiendo Poutine y disfrutando de sus temperaturas bajo cero.

¿Tienes un proyecto en mente? Hagámoslo real

CONTACTAR
Ebook-eBook – Funciones más Útiles para WordPress

Descarga el eBook GRATIS!

eBook – Funciones más Útiles para WordPress