"Si tú no trabajas por tus sueños, alguien te contratará para que trabajes por los suyos”

Steve Jobs

Afiliado
Dominios3Euros

Herramienta para trabajar con Bases de datos (MySQL o MariaDB)

Alguna de la siguiente herramientas que utilizamos cuando trabajamos con bases de datos de mysql o MariaDB.

Herramientas con las que podrás copiar, hacer migraciones de versiones, ver diferencias estructuras y incluso llenar con script automatizados.

Mysql - Recuperar respaldos de base de datos de mysql o maria-db

El programa que utiliza para hacer copias de seguridad es mysqldump es un programa que forma parte de los "MySQL Client Programs" de MySQL, que puede ser utilizado para generar respaldos de bases de datos y ser usados o incluso para ser transferidos a otro servidor de base datos SQL .

Para poder importar la base datos comprimida (xz) lo hacemos desde terminal con la siguiente instrucción.

mysql -u usuario -p base_datos < <(xz -cd < copia_de_base_datos_comprimida.dump.xz)

Mysqldump : Copia de seguridad.

Nuestro responsable de sistema utiliza una tarea cron en /etc/cron.d/backupbbddr para que ejecute un script que esta en /usr/local/sbin/backupbbdd  y realiza por cada base datos un backup utilizando mysqldump y comprimido con xz.,

Copia de solo estructura

Para hacer una copia de seguridad de solo la estructura :

$ mysqldump -uUsuario -p -h servidorMySQL --databases basea1 -d > basea1.sql

 

Copia de base datos completa

Hacer una copia de seguridad de la bases datos (basea1) completa

$ mysqldump -uUsuario -p -h servidorMySQL --databases basea1 > basea1.sql

 

Copia de bases datos comprimida

Nosotros utilizamos XZ Utils en linux para comprimir, por ello si queremos que nos haga una copia comprimida de la base datos, utilizamos la siguiente instruccion.

$ mysqldump -uUsuario -p -h servidorMySQL --databases basea1 | xz > basea1.sql

Con pipe y un simple xz , ya nos realiza la copia de seguridad comprimida.

 

Copia una base de datos a otra base de datos

La idea es copia una base datos en el mismo servidor.

$ mysql basedatos_nueva < <(mysqldump -n basedatos_vieja)

Primero tenemos que tener creada la base de datos.

 

Copia por ssh de base datos

Si lo quieres es hacer una copia de la base de datos en tu equipo local de un servidor y tienes conexion por ssh

$ ssh usuario@servidor mysqldump nombrebasedatos > nombresfichero.sql

Te realiza una copia en la carpeta que este de la base datos que indicaste, logicamente tienes que tenes instalado mysqldump en el servidor.

 

sqlt-diff: Diferencias estructura

Si queremos obtener las diferencias que hay entre las estructuras de dos bases de datos, podemos hacerlo asi.

$ sqlt-diff basea1.sql=MySQL basea2.sql=MySQL > diff.sql

Obtenemos un sql para poner la estructura de la primera base de datos igual de la segunda.

Suele dar problemas los comentarios, me imagino que hay forma de ignorarlos en las opciones de "sqlt".

Otro problema que me encontre son los autoincrement que seguramente no queramos ponerlos igual, asi que tenerlo en cuenta.

 

 

Phinx : Migraciones y seed

Este no es un programa, necesita una instalacion un poco mas compleja, ya requiere de composer, en fin, en su web puedes ver como instalarlo y mucha documentacion.

Nosotros la utilizamos como librería mas para nuestros proyectos en php, según su web es la forma mas nativa de php de hacer migraciones de una base de datos.

La cuestion es que puedes hacer cambios en la base de datos de una forma ordenada y controlada, como si fuera un controlador de versiones de la base de datos. Lo que hizo que empezarámos a utilizarlo es el metodo down, con el que podemos estado de la estructura de datos en versiones anteriores.

 

La instalación  de  Phinx

Como ya dije , necesitas tener composer en el servidor  o equipo local donde tenga SQL . La instalación de composer ya explicaré como, ya que ahora no lo recuerdo.. :-) lo unico que recuerdo es que requirió tener instalado php 7.2

Para instalar phix:

#composer require robmorgan/phinx
php composer.phar require robmorgan phinx

En el siguiente link podrás ver información muy buena y en español para comprenderlo y utilizarlo.

Nosotros de momento solo voy explicar como aplicamos la migraciones.

php vendor/bin/phinx migrate -e development

Nosotros en la configuracion utilizamos nombres de los distinto proyectos o ramas, en vez development, esto se puede cambiar en el fichero phinx.yml.

 

Fuentes y referencias:

LinuxTotalLinuxTotal

Cooperativa de Software Libre - Creando script de migraciones