2012-02-02 11 views
7

Estoy trabajando con bases de datos MySQL. Para simplificar el problema, supongamos que tengo dos entornos: el local (desarrollo) y el remoto (modo de producción).Delvering una base de datos modificada del entorno local a la de producción

En la base de datos, tengo algunas tablas que contienen datos de configuración.

¿Cómo puedo automatizar limpiamente la entrega del modo de desarrollo al modo de producción cuando modifico el esquema de la base de datos y el contenido de las tablas de configuración?

Por ejemplo, lo doté manualmente haciendo una diferencia entre las bases de datos locales y remotas. Pero, encuentro que ese método no es tan limpio y creo que hay buenas prácticas que permiten eso.

+0

No pude dar el bounty "manualmente" porque no había una respuesta precisa a mis necesidades específicas. Sin embargo, las sugerencias son muy buenas. Gracias. – Zakaria

Respuesta

3

Esto podría ser útil en casos donde hay múltiples entornos y múltiples desarrolladores de realizar cambios de esquema muy a menudo y utilizando php .. https://github.com/davejkiger/mysql-php-migrations

+0

gracias por la respuesta. ¿Usaste esta herramienta? – Zakaria

+0

Sí. Funciona decentemente bien para nosotros. Todos los cambios de esquema se almacenan en un formato particular legible por el script migrate y una vez que se ejecuta el script, realiza una copia de respaldo del archivo db y aplica los cambios. Tiene algunas opciones decentes para admitir diferentes entornos de desarrollo. Por ejemplo, cada entorno puede almacenar los scripts en diferentes rutas y puede especificar un parámetro de ruta al ejecutar el script migrate. –

1

En la mayoría de mis proyectos utilizo sqlalchemy (una herramienta de Python para gestionar db más una ORM). Si tienes algo de experiencia (poco más que principiante) con Python, recomiendo usarlo. Puede consultar la herramienta this con un poco de ayuda de that. Esto también es muy útil para migrar su base de datos a otros rdbms (por ejemplo, mysql a postgres u oráculo).

2
  • Introduzca el parámetro "versión" para su base de datos. Esta versión debe escribirse en algún lugar de su código y en algún lugar de su base de datos. Su código funcionará con la base de datos solo si tienen las mismas versiones

  • Cree un envoltorio alrededor de su conexión MySQL. Este contenedor debería verificar las versiones y si las versiones no son compatibles, debería comenzar la actualización.

  • "Actualización" es un proceso de aplicación secuencial de la lista de archivos * .sql con comandos SQL, que moverá su base de datos de un estado a otro. Puede ser cambios de esquema o comandos de manipulación de datos.

  • Cuando hace algo con la base de datos, hágalo solo agregando un nuevo archivo * .sql y una versión de incremento.

  • Como resultado, cuando despliega su base de datos desde el entorno de desarrollo a la producción, su base de datos se actualizará automáticamente de la misma manera que se actualizó durante el desarrollo.

Cuestiones relacionadas