Liquibase-Incorporación del histórico de cambios en una BBDD existente

Liquibase-Incorporación del histórico de cambios en una BBDD existente

0. Índice de contenidos.

1. Introducción

En el anterior tutorial haciamos una pequeña introducción sobre que es Liquibase, como funciona y que aporta a nuestros desarrollos, partiendo del punto de vista de una nueva bbdd, donde Liquibase se encarga de realizar cada uno de los cambios desde el primer momento. De esta manera en el histórico de cambios quedarán registrados todas las modificaciones de la bbdd desde su creación.

En esta ocasión os muestro como realizar un proceso de migración con Liquibase a partir de una base de datos existente. El proceso es sencillo y por eso el objetivo del tutorial es realizar la migración generando un histórico de cambios como si de una nueva bbdd se tratase. Una vez finalizada la migración obtendremos por un lado, un changelogs.xml (fichero con el conjunto de cambios) inicial de una bbdd en un estado concreto y por otro habremos incorporado a la bbdd origen un histórico de cambios con todas las modificaciones realizadas hasta ese estado.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware : Portátil Mac Book Pro 15″ (2,6 Ghz Intel Core i7, 4 GB DDR3)
  • Sistema Operativo:Mac OS X Snow Leopard 10.6.4
  • Liquibase 1.9.5
  • MySQL 5.0.5

3. Situación inicial

El ejemplo expuesto a continuación es un muy simple, pero los pasos a seguir serían los mismos si el modelo de datos fuese más complejo, teniendo en cuenta que Liquibase en esta situación, solo es un intérprete. Si el modelo de datos del que partimos no está correctamente diseñado el conjunto de cambios y el histórico se generarán con errores.

  • BBDD Origen;

    Es la bbdd de de la que partimos y a la que incluiremos el histórico con los cambios realizados hasta su situación actual.

    Como vemos la bbdd solo tiene creada dos tablas con sus datos correspondientes. Estos serian los cambios que contendrá el histórico después del proceso de migración.

4. Migración

A continuación cuento como realizar el proceso de migracón paso a paso:

  • Paso 1

    El primer paso consiste en generar el changelogs.xml a patir de la base de datos. Para ello desde la línea de comandos ejecutamos:

    Comprobamos la generación del changelogs.xml:

  • Paso 2

    El segundo paso consiste en generar un dump de la bbdd origen cuyo resultado será un script.sql que contendrá cada uno de los registros que pueblan la bbdd. Por ejemplo liquibase_origen.sql, el resultado seria:

    A continuación incluremos en el fichero de cambios un changeset que se encargará de ejecutar dicho script.

  • Paso 3

    El tecer paso consiste en ejecutar un update del changelogs.xml generado con liquibase sobre una bbdd nueva, “liquibase_nueva” por ejemplo. La bbdd a la que apuntemos ha de estar creada de antes de realizar el update. Desde linea de comando ejecutamos:

    Ahora solo tenemos que ejecutar dicho script sobre la base de datos origen lo que hará que se cree el histórico en dicha bbdd. Por tanto una vez ejecutado este script habremos incorporado un histórico de cambios a una bbdd existente manteniendo todos los cambios desde su inicio y la próxima vez que se realize un update sobre dicha bbdd Liquibase solo tendrá en cuenta los changeset nuevos que no estén en dicho histórico.

5. Conclusiones.

Como hemos visto, de una manera sencilla, podemos incorporar Liquibase en una bbdd existente suponiendo un impacto mínimo en nuestros desarrollos. Además creo que este proceso nos supone dos grandes ventajas: La primera es que a partir de este momento tendremos un histórico de los cambios realizados en dicho modelo de datos. La segunda es que obtenemos un conjunto de cambios inicial que puede servirnos como punto de partida para cada uno de los desarrolladores que forman parte del equipo. De esta manera en un instante cualquier nuevo desarrollador que se incorpore al proyecto podrá montar la bbdd ejecutando un update sobre el changelogs.xml generado.

Espero que os sirva de utilidad.

Un saludo.

Saúl García Díaz