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
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.