Hacer copia o duplicar base de datos MySQL con phpMyAdmin: Pestaña Synchronize.

Entre mis labores diarias consulto y modifico bases de datos MySQL, PostgreSQL y Firebird principalmente, y hoy me he llevado una sorpresa bastante agradable cuando abrí phpMyAdmin.
Entre los scripts que tengo programados para ejecución automática en mi equipo está uno que consulta actualizaciones de diferentes programas y paquetes en los diferentes repositorios SVN, Mercurial o GIT y descarga las últimas actualizaciones del paquete en cuestión, en este caso de phpMyAdmin 3.3.0-dev ha bajado la última versión de desarrollo del SVN y me he encontrado con una nueva pestaña: “Synchronize” (Sincronizar para las versiones en castellano).

Pestaña Sincronizar en phpMyAdmin 3.3.0

Nueva pestaña sincronizar disponible en phpMyAdmin 3.3.0

Como buen ingeniero no pude aguantarme las ganas y di click en la pestaña para probar esa nueva opción y me encontré con una página sencilla pero bastante intuitiva.

Contenido página Sincronizar en phpMyAdmin 3.3.0

Contenido página Sincronizar en phpMyAdmin 3.3.0

Luego de investigar de seleccionar una base de datos local y crear una de prueba vacía de destino decidí continuar haciendo click sobre el botón Go. Ahora me sorprende con una nueva página: la página de comparación de las bases de datos.

Selección de opciones a sincronizar en phpMyAdmin: datos y/o estructura

Selección de opciones a sincronizar en phpMyAdmin: datos y/o estructura

Puedo probar cómo efectivamente ha comparado no solo la estructura de las tablas sino también de los datos permitiendo agregar los registros faltantes a la base de datos destino. Al hacer click sobre el botón “Apply selected changes” (Aplicar cambios seleccionados) y curiosamente hace exactamente eso, ejecuta las consultas y regresa a la página de comparación. Luego de hacer click sobre el botón “Synchronize databases” ejecuta los cambios que hayamos seleccionado y muestra un informe con las sentencias SQL que se ejecutaron. En mi caso ejecutó todo sin errores ni problemas.

Les invito a probar esta nueva utilidad, parece que los desarrolladores de phpMyAdmin han escuchado nuestras plegarias y han visto nuestras necesidades. Vaya que han desarrollado una utilidad excelente: fácil, sencilla y hace exactamente lo que dice.

Qué otro módulo sería interesante tener en phpMyAdmin? No sería mala idea hacerles unas cuantas recomendaciones al equipo de desarrollo. Seguiré probando y les contaré alguna novedad.


4 Responses to “Hacer copia o duplicar base de datos MySQL con phpMyAdmin: Pestaña Synchronize.”

  • julinux Says:

    Hola un saludo desde Colombia, tengo dos dudas, que datos se llenan en el campo socket, no se si allí va la ruta en donde esta la BD que se va a sincronizar (/var/lib/mysql) y si la sincronización toca hacerla manual mente o queda automatizada, con esto quiero decir que cuando se haga una actualización en la bd que seleccione para la sincronización automaticamente se sincroniza a donde yo plasme el objetivo, bueno espero me puedas ayudar con estas dudas, gracias por tu información.

  • robregonm Says:

    El socket es útil para conexiones locales, es decir, la base de datos está hospedada en el mismo servidor web, y el tiempo de respuesta es bastante más óptimo que cuando se hace por IP. Para saber qué dato exactamente va en ese campo depende mucho de la configuración del archivo my.cnf y también varía de la distribución que esté usando. En este caso siempre es mejor consultar la documentación de la distro en cuestión. De todas formas en términos generales el dato que va allí debe ser un archivo existente en el sistema operativo, en el caso de mi Ubuntu 10.04 la ruta es: /var/run/mysqld/mysqld.sock

  • julinux Says:

    Gracias Robregonn por tu información, pero tengo la siguiente situación, tengo dos servidores servidorA y servidorB, en servidorA esta la bd original y en el servidorB cree una nueva bd con el mismo nombre de la original, en phpmyadmin del servidorA entre a sincronizar la bd con la bd de servidorB con los siguientes datos:

    (Source database)
    host=ip del servidorA
    socket=/var/run/mysqld/mysqld.sock
    username=usuario con privilegios de phpmyadmin
    password=******
    database=nombre bd

    (Target database)
    host=ip del servidorB
    socket=/var/run/mysqld/mysqld.sock
    username=usuario con privilegios de phpmyadmin
    password=******
    database=nombre bd

    El usuario y contraseña para phpmyadmin son iguales en ambos servidores, pero cuando le doy clic en continuar me dice que no hay conexión en la bd de servidorA y en la bd de servidorB, no se si hay que hacer algo antes de poder sincronizar las bd, gracias por su ayuda.

  • ProfesorYeow Says:

    lastima que a mi no me dejo… mi base de datos pesa 1.3gb y me dice “out of memory” jaja y eso que mi server tiene 2gb de ram exclusiva para mysql

Leave a Reply